]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile/ssa: fix unit tests
authorTodd Neal <todd@tneal.org>
Thu, 25 Jun 2015 23:03:50 +0000 (18:03 -0500)
committerKeith Randall <khr@golang.org>
Fri, 26 Jun 2015 02:25:57 +0000 (02:25 +0000)
Fix out of bounds array panic due to CL 11238.

Change-Id: Id8a46f1ee20cb1f46775d0c04cc4944d729dfceb
Reviewed-on: https://go-review.googlesource.com/11540
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/ssa/check.go
src/cmd/compile/internal/ssa/deadstore_test.go

index 1ca6e36ae70cc49843ec93bf4adcb73c6dc823f2..e889177841174feebe2cbba40fa8ed5d300eebf5 100644 (file)
@@ -105,6 +105,9 @@ func checkFunc(f *Func) {
                        }
 
                        if v.Op == OpAddr {
+                               if len(v.Args) == 0 {
+                                       f.Fatalf("no args for OpAddr %s", v.LongString())
+                               }
                                if v.Args[0].Op != OpSP && v.Args[0].Op != OpSB {
                                        f.Fatalf("bad arg to OpAddr %v", v)
                                }
index 042e7f66ffaf4b6c5cbe61f6b3fa2a65d7ac38ea..3b29e1c43046b971f5cb84901e3f1bda274e2ea0 100644 (file)
@@ -14,9 +14,10 @@ func TestDeadStore(t *testing.T) {
        fun := Fun(c, "entry",
                Bloc("entry",
                        Valu("start", OpArg, TypeMem, 0, ".mem"),
+                       Valu("sb", OpSB, TypeInvalid, 0, nil),
                        Valu("v", OpConst, TypeBool, 0, true),
-                       Valu("addr1", OpAddr, ptrType, 0, nil),
-                       Valu("addr2", OpAddr, ptrType, 0, nil),
+                       Valu("addr1", OpAddr, ptrType, 0, nil, "sb"),
+                       Valu("addr2", OpAddr, ptrType, 0, nil, "sb"),
                        Valu("store1", OpStore, TypeMem, 0, nil, "addr1", "v", "start"),
                        Valu("store2", OpStore, TypeMem, 0, nil, "addr2", "v", "store1"),
                        Valu("store3", OpStore, TypeMem, 0, nil, "addr1", "v", "store2"),
@@ -40,8 +41,9 @@ func TestDeadStorePhi(t *testing.T) {
        fun := Fun(c, "entry",
                Bloc("entry",
                        Valu("start", OpArg, TypeMem, 0, ".mem"),
+                       Valu("sb", OpSB, TypeInvalid, 0, nil),
                        Valu("v", OpConst, TypeBool, 0, true),
-                       Valu("addr", OpAddr, ptrType, 0, nil),
+                       Valu("addr", OpAddr, ptrType, 0, nil, "sb"),
                        Goto("loop")),
                Bloc("loop",
                        Valu("phi", OpPhi, TypeMem, 0, nil, "start", "store"),
@@ -66,9 +68,10 @@ func TestDeadStoreTypes(t *testing.T) {
        fun := Fun(c, "entry",
                Bloc("entry",
                        Valu("start", OpArg, TypeMem, 0, ".mem"),
+                       Valu("sb", OpSB, TypeInvalid, 0, nil),
                        Valu("v", OpConst, TypeBool, 0, true),
-                       Valu("addr1", OpAddr, t1, 0, nil),
-                       Valu("addr2", OpAddr, t2, 0, nil),
+                       Valu("addr1", OpAddr, t1, 0, nil, "sb"),
+                       Valu("addr2", OpAddr, t2, 0, nil, "sb"),
                        Valu("store1", OpStore, TypeMem, 0, nil, "addr1", "v", "start"),
                        Valu("store2", OpStore, TypeMem, 0, nil, "addr2", "v", "store1"),
                        Goto("exit")),