[dev.ssa] cmd/compile: Don't rematerialize getg

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>
This commit is contained in:
Keith Randall 2015-10-19 16:13:58 -07:00 committed by David Chase
parent c64a6f6362
commit 2dc88eead8

View 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
}