From: Keith Randall Date: Sat, 12 Sep 2015 21:45:58 +0000 (-0700) Subject: [dev.ssa] cmd/compile/internal/ssa: don't treat vardef/varkill as reads X-Git-Tag: go1.7beta1~1623^2^2~167 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=fda72e03751ab876ced9351611e42ad019090ec8;p=gostls13.git [dev.ssa] cmd/compile/internal/ssa: don't treat vardef/varkill as reads This makes deadstore elimination work reasonably again. Change-Id: I3a8caced71f12dfb6c1d0c68b7a7d8d7a736ea23 Reviewed-on: https://go-review.googlesource.com/14536 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/cmd/compile/internal/ssa/deadstore.go b/src/cmd/compile/internal/ssa/deadstore.go index 982bd7fa70..89f7504341 100644 --- a/src/cmd/compile/internal/ssa/deadstore.go +++ b/src/cmd/compile/internal/ssa/deadstore.go @@ -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)