mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 09:29:26 +02:00
* more getsupreg(...)<>/=getsupreg(...) replaced by SuperRegisterEqual which is more safe, the former could break as the register could have different register types
git-svn-id: trunk@34746 -
This commit is contained in:
parent
0c75c760bf
commit
781d6f31a8
@ -272,8 +272,8 @@ unit aoptx86;
|
|||||||
if assigned(p1) and
|
if assigned(p1) and
|
||||||
(p1.typ = ait_regalloc) then
|
(p1.typ = ait_regalloc) then
|
||||||
begin
|
begin
|
||||||
if (getregtype(reg)=getregtype(tai_regalloc(p1).reg)) and
|
{ same super register, different sub register? }
|
||||||
(getsupreg(tai_regalloc(p1).reg)=getsupreg(reg)) and (tai_regalloc(p1).reg<>reg) then
|
if SuperRegistersEqual(reg,tai_regalloc(p1).reg) and (tai_regalloc(p1).reg<>reg) then
|
||||||
begin
|
begin
|
||||||
if (getsubreg(tai_regalloc(p1).reg)>getsubreg(reg)) or (getsubreg(reg)=R_SUBH) then
|
if (getsubreg(tai_regalloc(p1).reg)>getsubreg(reg)) or (getsubreg(reg)=R_SUBH) then
|
||||||
internalerror(2016101501);
|
internalerror(2016101501);
|
||||||
@ -342,14 +342,14 @@ unit aoptx86;
|
|||||||
(p.opcode = A_MOVAPD) or
|
(p.opcode = A_MOVAPD) or
|
||||||
(p.opcode = A_MOVAPS)) and
|
(p.opcode = A_MOVAPS)) and
|
||||||
(p.oper[1]^.typ = top_reg) and
|
(p.oper[1]^.typ = top_reg) and
|
||||||
(getsupreg(p.oper[1]^.reg) = getsupreg(reg)) and
|
(SuperRegistersEqual(p.oper[1]^.reg,reg)) and
|
||||||
((p.oper[0]^.typ = top_const) or
|
((p.oper[0]^.typ = top_const) or
|
||||||
((p.oper[0]^.typ = top_reg) and
|
((p.oper[0]^.typ = top_reg) and
|
||||||
(getsupreg(p.oper[0]^.reg) <> getsupreg(reg))) or
|
not(SuperRegistersEqual(p.oper[0]^.reg,reg))) or
|
||||||
((p.oper[0]^.typ = top_ref) and
|
((p.oper[0]^.typ = top_ref) and
|
||||||
not RegInRef(reg,p.oper[0]^.ref^)))) or
|
not RegInRef(reg,p.oper[0]^.ref^)))) or
|
||||||
((p.opcode = A_POP) and
|
((p.opcode = A_POP) and
|
||||||
(getsupreg(p.oper[0]^.reg) = getsupreg(reg)));
|
(SuperRegistersEqual(p.oper[0]^.reg,reg)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user