mirror of
https://github.com/golang/go
synced 2024-11-18 11:55:01 -07:00
cmd/compile: fix OffPtr type in 2-field struct Store rule
The type of the OffPtr for the first field was incorrect. It should have been a pointer to the field type, rather than the field type itself. Fixes #19475. Change-Id: I3960b404da0f4bee759331126cce6140d2ce1df7 Reviewed-on: https://go-review.googlesource.com/37869 Run-TryBot: Michael Munday <munday@ca.ibm.com> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
4210930a28
commit
945180fe2a
@ -800,7 +800,7 @@
|
|||||||
(OffPtr <t.FieldType(1).PtrTo()> [t.FieldOff(1)] dst)
|
(OffPtr <t.FieldType(1).PtrTo()> [t.FieldOff(1)] dst)
|
||||||
f1
|
f1
|
||||||
(Store [t.FieldType(0).Size()]
|
(Store [t.FieldType(0).Size()]
|
||||||
(OffPtr <t.FieldType(0)> [0] dst)
|
(OffPtr <t.FieldType(0).PtrTo()> [0] dst)
|
||||||
f0 mem))
|
f0 mem))
|
||||||
(Store dst (StructMake3 <t> f0 f1 f2) mem) ->
|
(Store dst (StructMake3 <t> f0 f1 f2) mem) ->
|
||||||
(Store [t.FieldType(2).Size()]
|
(Store [t.FieldType(2).Size()]
|
||||||
|
@ -14705,7 +14705,7 @@ func rewriteValuegeneric_OpStore(v *Value, config *Config) bool {
|
|||||||
}
|
}
|
||||||
// match: (Store dst (StructMake2 <t> f0 f1) mem)
|
// match: (Store dst (StructMake2 <t> f0 f1) mem)
|
||||||
// cond:
|
// cond:
|
||||||
// result: (Store [t.FieldType(1).Size()] (OffPtr <t.FieldType(1).PtrTo()> [t.FieldOff(1)] dst) f1 (Store [t.FieldType(0).Size()] (OffPtr <t.FieldType(0)> [0] dst) f0 mem))
|
// result: (Store [t.FieldType(1).Size()] (OffPtr <t.FieldType(1).PtrTo()> [t.FieldOff(1)] dst) f1 (Store [t.FieldType(0).Size()] (OffPtr <t.FieldType(0).PtrTo()> [0] dst) f0 mem))
|
||||||
for {
|
for {
|
||||||
dst := v.Args[0]
|
dst := v.Args[0]
|
||||||
v_1 := v.Args[1]
|
v_1 := v.Args[1]
|
||||||
@ -14725,7 +14725,7 @@ func rewriteValuegeneric_OpStore(v *Value, config *Config) bool {
|
|||||||
v.AddArg(f1)
|
v.AddArg(f1)
|
||||||
v1 := b.NewValue0(v.Pos, OpStore, TypeMem)
|
v1 := b.NewValue0(v.Pos, OpStore, TypeMem)
|
||||||
v1.AuxInt = t.FieldType(0).Size()
|
v1.AuxInt = t.FieldType(0).Size()
|
||||||
v2 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0))
|
v2 := b.NewValue0(v.Pos, OpOffPtr, t.FieldType(0).PtrTo())
|
||||||
v2.AuxInt = 0
|
v2.AuxInt = 0
|
||||||
v2.AddArg(dst)
|
v2.AddArg(dst)
|
||||||
v1.AddArg(v2)
|
v1.AddArg(v2)
|
||||||
|
Loading…
Reference in New Issue
Block a user