mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-24 05:59:34 +02:00
* TARMAsmOptimizer.RemoveSuperfluousMove should not mess with PC
git-svn-id: trunk@44842 -
This commit is contained in:
parent
c2df0f2300
commit
db19900eb1
@ -200,10 +200,12 @@ Implementation
|
||||
{ the destination register of the mov might not be used beween p and movp }
|
||||
not(RegUsedBetween(taicpu(movp).oper[0]^.reg,p,movp)) and
|
||||
{$ifdef ARM}
|
||||
{ PC should be changed only by moves }
|
||||
(taicpu(movp).oper[0]^.reg<>NR_PC) and
|
||||
{ cb[n]z are thumb instructions which require specific registers, with no wide forms }
|
||||
(taicpu(p).opcode<>A_CBZ) and
|
||||
(taicpu(p).opcode<>A_CBNZ) and
|
||||
{There is a special requirement for MUL and MLA, oper[0] and oper[1] are not allowed to be the same}
|
||||
{ There is a special requirement for MUL and MLA, oper[0] and oper[1] are not allowed to be the same }
|
||||
not (
|
||||
(taicpu(p).opcode in [A_MLA, A_MUL]) and
|
||||
(taicpu(p).oper[1]^.reg = taicpu(movp).oper[0]^.reg) and
|
||||
|
Loading…
Reference in New Issue
Block a user