diff options
author | Keith Randall <khr@golang.org> | 2020-04-12 20:05:14 -0700 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2020-04-13 15:41:40 +0000 |
commit | 1e820a3432029355402aeeaf769b9a4e46eb46aa (patch) | |
tree | 1747a67dbb270f2cc2f5903e40c2eaf6c168346c /src/cmd/compile/internal/ssa/rewriteRISCV64.go | |
parent | dc9879e8fde3af804ac310ee54cf67efdae26aab (diff) | |
download | go-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.go | 17 |
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] |