]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.ssa] cmd/compile: Don't rematerialize getg
authorKeith Randall <khr@golang.org>
Mon, 19 Oct 2015 23:13:58 +0000 (16:13 -0700)
committerDavid Chase <drchase@google.com>
Tue, 20 Oct 2015 01:41:50 +0000 (01:41 +0000)
It isn't safe in functions that also call setg.

Change-Id: I76a7bf0401b4b6c8a129c245b15a2d6f06080e94
Reviewed-on: https://go-review.googlesource.com/16095
Reviewed-by: Todd Neal <todd@tneal.org>
src/cmd/compile/internal/ssa/regalloc.go

index 6418bb375d61d641953305a4c2bfe7085748fcb3..72b056cd8d2009a2b65b7b7e978b1d99451b3471 100644 (file)
@@ -982,7 +982,11 @@ func (v *Value) rematerializeable() bool {
                // which can't be moved.
                return false
        }
-       // TODO: maybe not OpAMD64LoweredGetG?
+       if v.Op == OpAMD64LoweredGetG {
+               // It would almost always be ok to rematerialize this op.
+               // The annoying exception is functions that call runtime.setg.
+               return false
+       }
        if len(v.Args) == 0 {
                return true
        }