go/test/fixedbugs/issue17918.go
Philip Hofer a34fddf46c cmd/compile: in cse, allow for new ssa values
The table of rewrites in ssa/cse is not sized appropriately for
ssa IDs that are created during copying of selects into new blocks.

Fixes #17918

Change-Id: I65fe86c6aab5efa679aa473aadc4ee6ea882cd41
Reviewed-on: https://go-review.googlesource.com/33240
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-11-18 16:31:27 +00:00

42 lines
619 B
Go

// compile
// Copyright 2016 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Issue 17918: slice out-of-bounds in ssa/cse
package dead
import (
"fmt"
"time"
)
var (
units = []struct {
divisor time.Duration
unit rune
}{
{1000000, 's'},
{60, 'm'},
{60, 'h'},
{24, 'd'},
{7, 'w'},
}
)
func foobar(d time.Duration) string {
d /= time.Microsecond
unit := 'u'
for _, f := range units {
if d%f.divisor != 0 {
break
}
d /= f.divisor
unit = f.unit
}
return fmt.Sprintf("%d%c", d, unit)
}