* x86-64: we can spill replace 32 bit operations if the operation does not modify a register

git-svn-id: trunk@49097 -
This commit is contained in:
florian 2021-03-31 21:23:22 +00:00
parent 8ea95e9b95
commit 7811b915a9

View File

@ -407,8 +407,10 @@ implementation
{ 32 bit operations on 32 bit registers on x86_64 can result in { 32 bit operations on 32 bit registers on x86_64 can result in
zeroing the upper 32 bits of the register. This does not happen zeroing the upper 32 bits of the register. This does not happen
with memory operations, so we have to perform these calculations with memory operations, so we have to perform these calculations
in registers. } in registers.
if (opsize=S_L) then
However, for instructions not modifying registers, this is not a problem }
if (opsize=S_L) and (opcode<>A_CMP) and (opcode<>A_TEST) and (opcode<>A_BT) then
replaceoper:=-1; replaceoper:=-1;
{$endif x86_64} {$endif x86_64}