aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/gen/ARM64Ops.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2018-04-02 16:08:09 -0400
committerAustin Clements <austin@google.com>2018-04-20 18:46:39 +0000
commit8871c930bead174b942ce934677054f8958d0631 (patch)
treeabfeb931342027082931e6d1997566a4bf4d55fe /src/cmd/compile/internal/ssa/gen/ARM64Ops.go
parentc1a466b158d5bfa47993d52e5151588d23c45ab0 (diff)
downloadgo-8871c930bead174b942ce934677054f8958d0631.tar.gz
go-8871c930bead174b942ce934677054f8958d0631.zip
cmd/compile: don't lower OpConvert
Currently, each architecture lowers OpConvert to an arch-specific OpXXXconvert. This is silly because OpConvert means the same thing on all architectures and is logically a no-op that exists only to keep track of conversions to and from unsafe.Pointer. Furthermore, lowering it makes it harder to recognize in other analyses, particularly liveness analysis. This CL eliminates the lowering of OpConvert, leaving it as the generic op until code generation time. The main complexity here is that we still need to register-allocate OpConvert operations. Currently, each arch's lowered OpConvert specifies all GP registers in its register mask. Ideally, OpConvert wouldn't affect value homing at all, and we could just copy the home of OpConvert's source, but this can potentially home an OpConvert in a LocalSlot, which neither regalloc nor stackalloc expect. Rather than try to disentangle this assumption from regalloc and stackalloc, we continue to register-allocate OpConvert, but teach regalloc that OpConvert can be allocated to any allocatable GP register. For #24543. Change-Id: I795a6aee5fd94d4444a7bafac3838a400c9f7bb6 Reviewed-on: https://go-review.googlesource.com/108496 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/gen/ARM64Ops.go')
-rw-r--r--src/cmd/compile/internal/ssa/gen/ARM64Ops.go7
1 files changed, 0 insertions, 7 deletions
diff --git a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go
index 184e22717e..c90d1439cd 100644
--- a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go
+++ b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go
@@ -506,13 +506,6 @@ func init() {
// LoweredGetCallerSP returns the SP of the caller of the current function.
{name: "LoweredGetCallerSP", reg: gp01, rematerializeable: true},
- // MOVDconvert converts between pointers and integers.
- // We have a special op for this so as to not confuse GC
- // (particularly stack maps). It takes a memory arg so it
- // gets correctly ordered with respect to GC safepoints.
- // arg0=ptr/int arg1=mem, output=int/ptr
- {name: "MOVDconvert", argLength: 2, reg: gp11, asm: "MOVD"},
-
// Constant flag values. For any comparison, there are 5 possible
// outcomes: the three from the signed total order (<,==,>) and the
// three from the unsigned total order. The == cases overlap.