Browse Source

don't swap the base and index registers if we have a scalefactor

git-svn-id: trunk@27109 -
Károly Balogh 11 years ago
parent
commit
3a464dbdcf
1 changed files with 4 additions and 2 deletions
  1. 4 2
      compiler/m68k/cgcpu.pas

+ 4 - 2
compiler/m68k/cgcpu.pas

@@ -453,10 +453,12 @@ unit cgcpu;
          }
          { first ensure that base is an address register }
          if ((ref.base<>NR_NO) and (ref.index<>NR_NO)) and
-            (not isaddressregister(ref.base) and isaddressregister(ref.index)) then
+            (not isaddressregister(ref.base) and isaddressregister(ref.index)) and
+            (ref.scalefactor < 2) then
            begin
              { if we have both base and index registers, but base is data and index
-               is address, we can just swap them, as FPC always uses long index }
+               is address, we can just swap them, as FPC always uses long index.
+               but we can only do this, if the index has no scalefactor }
              hreg:=ref.base;
              ref.base:=ref.index;
              ref.index:=hreg;