diff options
Diffstat (limited to 'src/cmd/compile/internal/ssa/func_test.go')
| -rw-r--r-- | src/cmd/compile/internal/ssa/func_test.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/func_test.go b/src/cmd/compile/internal/ssa/func_test.go index fa6a1a8751..4fef782afc 100644 --- a/src/cmd/compile/internal/ssa/func_test.go +++ b/src/cmd/compile/internal/ssa/func_test.go @@ -421,6 +421,28 @@ func TestEquiv(t *testing.T) { } } +// TestConstCache ensures that the cache will not return +// reused free'd values with a non-matching AuxInt +func TestConstCache(t *testing.T) { + f := Fun(testConfig(t), "entry", + Bloc("entry", + Valu("mem", OpInitMem, TypeMem, 0, nil), + Exit("mem"))) + v1 := f.f.ConstBool(0, TypeBool, false) + v2 := f.f.ConstBool(0, TypeBool, true) + f.f.freeValue(v1) + f.f.freeValue(v2) + v3 := f.f.ConstBool(0, TypeBool, false) + v4 := f.f.ConstBool(0, TypeBool, true) + if v3.AuxInt != 0 { + t.Errorf("expected %s to have auxint of 0\n", v3.LongString()) + } + if v4.AuxInt != 1 { + t.Errorf("expected %s to have auxint of 1\n", v4.LongString()) + } + +} + // opcodeMap returns a map from opcode to the number of times that opcode // appears in the function. func opcodeMap(f *Func) map[Op]int { |
