mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: never CSE two memories
It never makes sense to CSE two ops that generate memory. We might as well start those ops off in their own partition. Fixes #15520 Change-Id: I0091ed51640f2c10cd0117f290b034dde7a86721 Reviewed-on: https://go-review.googlesource.com/22741 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
01182425f8
commit
b64c7fc683
3 changed files with 4 additions and 17 deletions
|
|
@ -257,13 +257,10 @@ func cmpVal(v, w *Value, auxIDs auxmap, depth int) Cmp {
|
|||
if v.Op == OpPhi && v.Block != w.Block {
|
||||
return lt2Cmp(v.Block.ID < w.Block.ID)
|
||||
}
|
||||
|
||||
switch v.Op {
|
||||
case OpStaticCall, OpAMD64CALLstatic, OpARMCALLstatic:
|
||||
sym := v.Aux.(GCSym)
|
||||
if sym.IsRuntimeCall("newobject") {
|
||||
return lt2Cmp(v.ID < w.ID)
|
||||
}
|
||||
if v.Type.IsMemory() {
|
||||
// We will never be able to CSE two values
|
||||
// that generate memory.
|
||||
return lt2Cmp(v.ID < w.ID)
|
||||
}
|
||||
|
||||
if tc := v.Type.Compare(w.Type); tc != CMPeq {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue