]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile/internal/ssa: don't treat vardef/varkill as reads
authorKeith Randall <khr@golang.org>
Sat, 12 Sep 2015 21:45:58 +0000 (14:45 -0700)
committerKeith Randall <khr@golang.org>
Sat, 12 Sep 2015 22:10:58 +0000 (22:10 +0000)
This makes deadstore elimination work reasonably again.

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

index 982bd7fa70fbcdafaa1ae8a6bb996ecafb389b12..89f7504341fdf2441dcc844b157e7a05eff607e8 100644 (file)
@@ -30,7 +30,7 @@ func dse(f *Func) {
                                for _, a := range v.Args {
                                        if a.Block == b && a.Type.IsMemory() {
                                                storeUse.add(a.ID)
-                                               if v.Op != OpStore && v.Op != OpZero {
+                                               if v.Op != OpStore && v.Op != OpZero && v.Op != OpVarDef && v.Op != OpVarKill {
                                                        // CALL, DUFFCOPY, etc. are both
                                                        // reads and writes.
                                                        loadUse.add(a.ID)