]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile/internal/ssa: Phi inputs from dead blocks are not live
authorKeith Randall <khr@golang.org>
Sat, 11 Jul 2015 21:41:22 +0000 (14:41 -0700)
committerKeith Randall <khr@golang.org>
Sat, 11 Jul 2015 22:45:14 +0000 (22:45 +0000)
Fixes #11676

Change-Id: I941f951633c89bb1454ce6d1d1b4124d46a7d9dd
Reviewed-on: https://go-review.googlesource.com/12091
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/ssa/deadcode.go

index 2be7b8ebaf5146c26b404a3a526f73faf679dbcc..1b1ae27e5821823d91c597f48db9586f9841698a 100644 (file)
@@ -44,7 +44,10 @@ func deadcode(f *Func) {
                // pop a reachable value
                v := q[len(q)-1]
                q = q[:len(q)-1]
-               for _, x := range v.Args {
+               for i, x := range v.Args {
+                       if v.Op == OpPhi && !reachable[v.Block.Preds[i].ID] {
+                               continue
+                       }
                        if !live[x.ID] {
                                live[x.ID] = true
                                q = append(q, x) // push