* handle pc relative offsets in ldf/stf correctly

git-svn-id: trunk@6115 -
This commit is contained in:
florian 2007-01-21 22:55:12 +00:00
parent bb0bd621d4
commit c16c124562
2 changed files with 9 additions and 3 deletions

View File

@ -683,6 +683,12 @@ unit cgcpu;
tmpref.symbol:=l; tmpref.symbol:=l;
tmpref.base:=NR_R15; tmpref.base:=NR_R15;
list.concat(taicpu.op_reg_ref(A_LDR,tmpreg,tmpref)); list.concat(taicpu.op_reg_ref(A_LDR,tmpreg,tmpref));
{ in case of LDF/STF, we got rid of the NR_R15 }
if is_pc(ref.base) then
ref.base:=NR_NO;
if is_pc(ref.index) then
ref.index:=NR_NO;
end end
else else
a_load_const_reg(list,OS_ADDR,ref.offset,tmpreg); a_load_const_reg(list,OS_ADDR,ref.offset,tmpreg);
@ -947,7 +953,7 @@ unit cgcpu;
so.shiftimm:=shiftimm; so.shiftimm:=shiftimm;
list.concat(taicpu.op_reg_reg_shifterop(A_MOV,reg2,reg,so)); list.concat(taicpu.op_reg_reg_shifterop(A_MOV,reg2,reg,so));
end; end;
function do_conv(size : tcgsize) : boolean; function do_conv(size : tcgsize) : boolean;
begin begin
result:=true; result:=true;
@ -972,7 +978,7 @@ unit cgcpu;
end; end;
conv_done:=result; conv_done:=result;
end; end;
var var
instr: taicpu; instr: taicpu;
begin begin

View File

@ -134,7 +134,7 @@ unit cpubase;
const const
cgsize2fpuoppostfix : array[OS_NO..OS_F128] of toppostfix = ( cgsize2fpuoppostfix : array[OS_NO..OS_F128] of toppostfix = (
PF_E, PF_None,
PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None, PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,
PF_S,PF_D,PF_E,PF_None,PF_None); PF_S,PF_D,PF_E,PF_None,PF_None);