* don't overwrite the flags in make_simple_ref() if the reference

has no scalefactor (fixup for r14871)

git-svn-id: trunk@34546 -
This commit is contained in:
Jonas Maebe 2016-09-20 21:43:39 +00:00
parent db171702f3
commit a9073cb50b

View File

@ -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;