aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/ssa/rewriteRISCV64.go
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2020-04-12 20:05:14 -0700
committerKeith Randall <khr@golang.org>2020-04-13 15:41:40 +0000
commit1e820a3432029355402aeeaf769b9a4e46eb46aa (patch)
tree1747a67dbb270f2cc2f5903e40c2eaf6c168346c /src/cmd/compile/internal/ssa/rewriteRISCV64.go
parentdc9879e8fde3af804ac310ee54cf67efdae26aab (diff)
downloadgo-1e820a3432029355402aeeaf769b9a4e46eb46aa.tar.gz
go-1e820a3432029355402aeeaf769b9a4e46eb46aa.zip
cmd/compile: ensure ... rules have compatible aux and auxint types
Otherwise, just copying the aux and auxint fields doesn't make much sense. (Although there's no bug - it just means it isn't typechecked correctly.) Change-Id: I4e21ac67f0c7bfd04ed5af1713cd24bca08af092 Reviewed-on: https://go-review.googlesource.com/c/go/+/227962 Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/ssa/rewriteRISCV64.go')
-rw-r--r--src/cmd/compile/internal/ssa/rewriteRISCV64.go17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/ssa/rewriteRISCV64.go b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
index 6a0f7f1c96..5b2746a514 100644
--- a/src/cmd/compile/internal/ssa/rewriteRISCV64.go
+++ b/src/cmd/compile/internal/ssa/rewriteRISCV64.go
@@ -30,8 +30,7 @@ func rewriteValueRISCV64(v *Value) bool {
v.Op = OpRISCV64ADD
return true
case OpAddr:
- v.Op = OpRISCV64MOVaddr
- return true
+ return rewriteValueRISCV64_OpAddr(v)
case OpAnd16:
v.Op = OpRISCV64AND
return true
@@ -641,6 +640,20 @@ func rewriteValueRISCV64(v *Value) bool {
}
return false
}
+func rewriteValueRISCV64_OpAddr(v *Value) bool {
+ v_0 := v.Args[0]
+ // match: (Addr {sym} base)
+ // result: (MOVaddr {sym} [0] base)
+ for {
+ sym := auxToSym(v.Aux)
+ base := v_0
+ v.reset(OpRISCV64MOVaddr)
+ v.AuxInt = int32ToAuxInt(0)
+ v.Aux = symToAux(sym)
+ v.AddArg(base)
+ return true
+ }
+}
func rewriteValueRISCV64_OpAvg64u(v *Value) bool {
v_1 := v.Args[1]
v_0 := v.Args[0]