mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-06 08:47:10 +01:00
* make use of xor reg,reg by generating it directly instead of hoping for the peephole
optimizer which cannot do this properly due to missing information about flags. By doing so the size of the compiler executable gets reduced by ~1 % git-svn-id: trunk@33524 -
This commit is contained in:
parent
2dbcdbe466
commit
f576b0c01b
@ -453,16 +453,6 @@ begin
|
||||
hp1.free;
|
||||
end;
|
||||
end;
|
||||
A_XOR:
|
||||
if (taicpu(p).oper[0]^.typ = top_reg) and
|
||||
(taicpu(p).oper[1]^.typ = top_reg) and
|
||||
(taicpu(p).oper[0]^.reg = taicpu(p).oper[1]^.reg) then
|
||||
{ temporarily change this to 'mov reg,0' to make it easier }
|
||||
{ for the CSE. Will be changed back in pass 2 }
|
||||
begin
|
||||
taicpu(p).opcode := A_MOV;
|
||||
taicpu(p).loadConst(0,0);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -909,9 +909,10 @@ unit cgx86;
|
||||
|
||||
begin
|
||||
check_register_size(tosize,reg);
|
||||
{ the optimizer will change it to "xor reg,reg" when loading zero, }
|
||||
{ no need to do it here too (JM) }
|
||||
list.concat(taicpu.op_const_reg(A_MOV,TCGSize2OpSize[tosize],a,reg))
|
||||
if a=0 then
|
||||
list.concat(taicpu.op_reg_reg(A_XOR,TCGSize2OpSize[tosize],reg,reg))
|
||||
else
|
||||
list.concat(taicpu.op_const_reg(A_MOV,TCGSize2OpSize[tosize],a,reg));
|
||||
end;
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user