This caused the following code snippet to be miscompiled
var f int
x := g(&f)
f = 10
Moving the store of 10 above the function call.
Change-Id: Ic6951f5e7781b122cd881df324a38e519d6d66f0
Reviewed-on: https://go-review.googlesource.com/11073
Reviewed-by: Keith Randall <khr@golang.org>
// Make initial partition based on opcode/type/aux/nargs
// TODO(khr): types are not canonical, so we may split unnecessarily. Fix that.
type key struct {
- op Op
- typ Type
- aux interface{}
- nargs int
+ op Op
+ typ Type
+ aux interface{}
+ auxint int64
+ nargs int
}
m := map[key]eqclass{}
for _, b := range f.Blocks {
for _, v := range b.Values {
- k := key{v.Op, v.Type, v.Aux, len(v.Args)}
+ k := key{v.Op, v.Type, v.Aux, v.AuxInt, len(v.Args)}
m[k] = append(m[k], v)
}
}