Forráskód Böngészése

* don't overwrite the flags in make_simple_ref() if the reference
has no scalefactor (fixup for r14871)

git-svn-id: trunk@34546 -

Jonas Maebe 8 éve
szülő
commit
a9073cb50b
1 módosított fájl, 6 hozzáadás és 16 törlés
  1. 6 16
      compiler/x86/cgx86.pas

+ 6 - 16
compiler/x86/cgx86.pas

@@ -457,22 +457,12 @@ unit cgx86;
             else
               begin
                 { don't use add, as the flags may contain a value }
-                reference_reset_base(href,ref.base,0,ref.alignment);
-                href.index:=hreg;
-                if ref.scalefactor<>0 then
-                  begin
-                    reference_reset_base(href,ref.base,0,ref.alignment);
-                    href.index:=hreg;
-                    list.concat(taicpu.op_ref_reg(A_LEA,S_Q,href,hreg));
-                    ref.base:=hreg;
-                  end
-                else
-                  begin
-                    reference_reset_base(href,ref.index,0,ref.alignment);
-                    href.index:=hreg;
-                    list.concat(taicpu.op_reg_reg(A_ADD,S_Q,ref.index,hreg));
-                    ref.index:=hreg;
-                  end;
+                reference_reset_base(href,hreg,0,ref.alignment);
+                href.index:=ref.index;
+                href.scalefactor:=ref.scalefactor;
+                list.concat(taicpu.op_ref_reg(A_LEA,S_Q,href,hreg));
+                ref.index:=hreg;
+                ref.scalefactor:=1;
                end;
           end;