Ver Fonte

* take care of the fact that x and w registers overlap when carrying out the Str/LdrAdd/Sub2Str/Ldr Postindex optimization

git-svn-id: trunk@40023 -
florian há 6 anos atrás
pai
commit
112fb4613b
1 ficheiros alterados com 1 adições e 3 exclusões
  1. 1 3
      compiler/aarch64/aoptcpu.pas

+ 1 - 3
compiler/aarch64/aoptcpu.pas

@@ -128,10 +128,8 @@ Implementation
          (abs(taicpu(hp1).oper[2]^.val)<256)
         ) and
         { don't apply the optimization if the base register is loaded }
-        (p.oper[0]^.reg<>p.oper[1]^.ref^.base) and
+        (getsupreg(p.oper[0]^.reg)<>getsupreg(p.oper[1]^.ref^.base)) and
         not(RegModifiedBetween(taicpu(hp1).oper[0]^.reg,p,hp1)) and
-        { don't apply the optimization if the (new) index register is loaded }
-        (p.oper[0]^.reg<>taicpu(hp1).oper[2]^.reg) and
         not(RegModifiedBetween(taicpu(hp1).oper[2]^.reg,p,hp1)) then
         begin
           DebugMsg('Peephole Str/LdrAdd/Sub2Str/Ldr Postindex done', p);