From: Keith Randall Date: Sat, 30 Apr 2016 00:10:02 +0000 (-0700) Subject: cmd/compile: ecx is reserved for PIC, don't let peep work on it X-Git-Tag: go1.7beta1~397 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7a60a962b9284763f8ff239aae54d1d858dd4543;p=gostls13.git cmd/compile: ecx is reserved for PIC, don't let peep work on it Fixes #15496 Change-Id: Ieb5be1caa4b1c23e23b20d56c1a0a619032a9f5d Reviewed-on: https://go-review.googlesource.com/22652 Reviewed-by: Josh Bleecher Snyder --- diff --git a/src/cmd/compile/internal/x86/peep.go b/src/cmd/compile/internal/x86/peep.go index dfbe9d2023..0a4ecc0e5c 100644 --- a/src/cmd/compile/internal/x86/peep.go +++ b/src/cmd/compile/internal/x86/peep.go @@ -249,6 +249,10 @@ func excise(r *gc.Flow) { } func regtyp(a *obj.Addr) bool { + if gc.Ctxt.Flag_shared && a.Type == obj.TYPE_REG && a.Reg == x86.REG_CX { + // don't propagate CX, it is used implicitly by PIC global references + return false + } return a.Type == obj.TYPE_REG && (x86.REG_AX <= a.Reg && a.Reg <= x86.REG_DI || x86.REG_X0 <= a.Reg && a.Reg <= x86.REG_X7) }