mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 18:09:27 +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
|
||||
(p1.typ = ait_regalloc) then
|
||||
begin
|
||||
if (getregtype(reg)=getregtype(tai_regalloc(p1).reg)) and
|
||||
(getsupreg(tai_regalloc(p1).reg)=getsupreg(reg)) and (tai_regalloc(p1).reg<>reg) then
|
||||
{ same super register, different sub register? }
|
||||
if SuperRegistersEqual(reg,tai_regalloc(p1).reg) and (tai_regalloc(p1).reg<>reg) then
|
||||
begin
|
||||
if (getsubreg(tai_regalloc(p1).reg)>getsubreg(reg)) or (getsubreg(reg)=R_SUBH) then
|
||||
internalerror(2016101501);
|
||||
@ -342,14 +342,14 @@ unit aoptx86;
|
||||
(p.opcode = A_MOVAPD) or
|
||||
(p.opcode = A_MOVAPS)) 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_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
|
||||
not RegInRef(reg,p.oper[0]^.ref^)))) or
|
||||
((p.opcode = A_POP) and
|
||||
(getsupreg(p.oper[0]^.reg) = getsupreg(reg)));
|
||||
(SuperRegistersEqual(p.oper[0]^.reg,reg)));
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user