* fix tthumbcgarm.g_flags2reg, mov reg,#imm for thumb updates the flags

git-svn-id: trunk@25426 -
This commit is contained in:
florian 2013-09-05 21:40:30 +00:00
parent 5039ddc4a7
commit 36e6f99843

View File

@ -4123,17 +4123,20 @@ unit cgcpu;
procedure tthumbcgarm.g_flags2reg(list: TAsmList; size: TCgSize; const f: TResFlags; reg: TRegister);
var
l : tasmlabel;
l1,l2 : tasmlabel;
ai : taicpu;
begin
current_asmdata.getjumplabel(l);
list.concat(taicpu.op_reg_const(A_MOV,reg,1));
ai:=setcondition(taicpu.op_sym(A_B,l),flags_to_cond(f));
current_asmdata.getjumplabel(l1);
current_asmdata.getjumplabel(l2);
ai:=setcondition(taicpu.op_sym(A_B,l1),flags_to_cond(f));
ai.is_jmp:=true;
list.concat(ai);
list.concat(taicpu.op_reg_const(A_MOV,reg,0));
list.concat(taicpu.op_sym(A_B,l2));
cg.a_label(list,l1);
list.concat(taicpu.op_reg_const(A_MOV,reg,1));
a_reg_dealloc(list,NR_DEFAULTFLAGS);
cg.a_label(list,l);
cg.a_label(list,l2);
end;