cmd/compile: some SSA cleanup
Do some easy TODOs.
Move a bunch of other TODOs into bugs.
Change-Id: Iaba9dad6221a2af11b3cbcc512875f4a85842873
Reviewed-on: https://go-review.googlesource.com/20114
Run-TryBot: Todd Neal <todd@tneal.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Todd Neal <todd@tneal.org>
diff --git a/src/cmd/compile/internal/ssa/rewritegeneric.go b/src/cmd/compile/internal/ssa/rewritegeneric.go
index ad2abc5..2e15dac 100644
--- a/src/cmd/compile/internal/ssa/rewritegeneric.go
+++ b/src/cmd/compile/internal/ssa/rewritegeneric.go
@@ -1142,25 +1142,25 @@
func rewriteValuegeneric_OpArrayIndex(v *Value, config *Config) bool {
b := v.Block
_ = b
- // match: (ArrayIndex (Load ptr mem) idx)
- // cond: b == v.Args[0].Block
- // result: (Load (PtrIndex <v.Type.PtrTo()> ptr idx) mem)
+ // match: (ArrayIndex <t> [0] (Load ptr mem))
+ // cond:
+ // result: @v.Args[0].Block (Load <t> ptr mem)
for {
+ t := v.Type
+ if v.AuxInt != 0 {
+ break
+ }
if v.Args[0].Op != OpLoad {
break
}
ptr := v.Args[0].Args[0]
mem := v.Args[0].Args[1]
- idx := v.Args[1]
- if !(b == v.Args[0].Block) {
- break
- }
- v.reset(OpLoad)
- v0 := b.NewValue0(v.Line, OpPtrIndex, v.Type.PtrTo())
- v0.AddArg(ptr)
- v0.AddArg(idx)
+ b = v.Args[0].Block
+ v0 := b.NewValue0(v.Line, OpLoad, t)
+ v.reset(OpCopy)
v.AddArg(v0)
- v.AddArg(mem)
+ v0.AddArg(ptr)
+ v0.AddArg(mem)
return true
}
return false