mirror of
https://github.com/golang/go
synced 2024-11-06 13:46:16 -07:00
cmd/compile: fix a bug in 386 backend
The ADDLmodify/SUBLmodify/ANDLmodify/ORLmodify/XORLmodify should have clobberFlags set to true. Change-Id: Ie447d536db51334eddc70c00a722647282186a69 Reviewed-on: https://go-review.googlesource.com/122556 Run-TryBot: Ben Shi <powerman1st@163.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
616da5da94
commit
f5d4863130
@ -346,11 +346,11 @@ func init() {
|
|||||||
{name: "MOVLstore", argLength: 3, reg: gpstore, asm: "MOVL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, symEffect: "Write"}, // store 4 bytes in arg1 to arg0+auxint+aux. arg2=mem
|
{name: "MOVLstore", argLength: 3, reg: gpstore, asm: "MOVL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, symEffect: "Write"}, // store 4 bytes in arg1 to arg0+auxint+aux. arg2=mem
|
||||||
|
|
||||||
// direct binary-op on memory (read-modify-write)
|
// direct binary-op on memory (read-modify-write)
|
||||||
{name: "ADDLmodify", argLength: 3, reg: gpstore, asm: "ADDL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) += arg1, arg2=mem
|
{name: "ADDLmodify", argLength: 3, reg: gpstore, asm: "ADDL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, clobberFlags: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) += arg1, arg2=mem
|
||||||
{name: "SUBLmodify", argLength: 3, reg: gpstore, asm: "SUBL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) -= arg1, arg2=mem
|
{name: "SUBLmodify", argLength: 3, reg: gpstore, asm: "SUBL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, clobberFlags: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) -= arg1, arg2=mem
|
||||||
{name: "ANDLmodify", argLength: 3, reg: gpstore, asm: "ANDL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) &= arg1, arg2=mem
|
{name: "ANDLmodify", argLength: 3, reg: gpstore, asm: "ANDL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, clobberFlags: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) &= arg1, arg2=mem
|
||||||
{name: "ORLmodify", argLength: 3, reg: gpstore, asm: "ORL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) |= arg1, arg2=mem
|
{name: "ORLmodify", argLength: 3, reg: gpstore, asm: "ORL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, clobberFlags: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) |= arg1, arg2=mem
|
||||||
{name: "XORLmodify", argLength: 3, reg: gpstore, asm: "XORL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) ^= arg1, arg2=mem
|
{name: "XORLmodify", argLength: 3, reg: gpstore, asm: "XORL", aux: "SymOff", typ: "Mem", faultOnNilArg0: true, clobberFlags: true, symEffect: "Read,Write"}, // *(arg0+auxint+aux) ^= arg1, arg2=mem
|
||||||
|
|
||||||
// indexed loads/stores
|
// indexed loads/stores
|
||||||
{name: "MOVBloadidx1", argLength: 3, reg: gploadidx, commutative: true, asm: "MOVBLZX", aux: "SymOff", symEffect: "Read"}, // load a byte from arg0+arg1+auxint+aux. arg2=mem
|
{name: "MOVBloadidx1", argLength: 3, reg: gploadidx, commutative: true, asm: "MOVBLZX", aux: "SymOff", symEffect: "Read"}, // load a byte from arg0+arg1+auxint+aux. arg2=mem
|
||||||
|
@ -4435,6 +4435,7 @@ var opcodeTable = [...]opInfo{
|
|||||||
name: "ADDLmodify",
|
name: "ADDLmodify",
|
||||||
auxType: auxSymOff,
|
auxType: auxSymOff,
|
||||||
argLen: 3,
|
argLen: 3,
|
||||||
|
clobberFlags: true,
|
||||||
faultOnNilArg0: true,
|
faultOnNilArg0: true,
|
||||||
symEffect: SymRead | SymWrite,
|
symEffect: SymRead | SymWrite,
|
||||||
asm: x86.AADDL,
|
asm: x86.AADDL,
|
||||||
@ -4449,6 +4450,7 @@ var opcodeTable = [...]opInfo{
|
|||||||
name: "SUBLmodify",
|
name: "SUBLmodify",
|
||||||
auxType: auxSymOff,
|
auxType: auxSymOff,
|
||||||
argLen: 3,
|
argLen: 3,
|
||||||
|
clobberFlags: true,
|
||||||
faultOnNilArg0: true,
|
faultOnNilArg0: true,
|
||||||
symEffect: SymRead | SymWrite,
|
symEffect: SymRead | SymWrite,
|
||||||
asm: x86.ASUBL,
|
asm: x86.ASUBL,
|
||||||
@ -4463,6 +4465,7 @@ var opcodeTable = [...]opInfo{
|
|||||||
name: "ANDLmodify",
|
name: "ANDLmodify",
|
||||||
auxType: auxSymOff,
|
auxType: auxSymOff,
|
||||||
argLen: 3,
|
argLen: 3,
|
||||||
|
clobberFlags: true,
|
||||||
faultOnNilArg0: true,
|
faultOnNilArg0: true,
|
||||||
symEffect: SymRead | SymWrite,
|
symEffect: SymRead | SymWrite,
|
||||||
asm: x86.AANDL,
|
asm: x86.AANDL,
|
||||||
@ -4477,6 +4480,7 @@ var opcodeTable = [...]opInfo{
|
|||||||
name: "ORLmodify",
|
name: "ORLmodify",
|
||||||
auxType: auxSymOff,
|
auxType: auxSymOff,
|
||||||
argLen: 3,
|
argLen: 3,
|
||||||
|
clobberFlags: true,
|
||||||
faultOnNilArg0: true,
|
faultOnNilArg0: true,
|
||||||
symEffect: SymRead | SymWrite,
|
symEffect: SymRead | SymWrite,
|
||||||
asm: x86.AORL,
|
asm: x86.AORL,
|
||||||
@ -4491,6 +4495,7 @@ var opcodeTable = [...]opInfo{
|
|||||||
name: "XORLmodify",
|
name: "XORLmodify",
|
||||||
auxType: auxSymOff,
|
auxType: auxSymOff,
|
||||||
argLen: 3,
|
argLen: 3,
|
||||||
|
clobberFlags: true,
|
||||||
faultOnNilArg0: true,
|
faultOnNilArg0: true,
|
||||||
symEffect: SymRead | SymWrite,
|
symEffect: SymRead | SymWrite,
|
||||||
asm: x86.AXORL,
|
asm: x86.AXORL,
|
||||||
|
Loading…
Reference in New Issue
Block a user