From 36e6f998431c437814be52bf1b3c6aa6bd4810ae Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 5 Sep 2013 21:40:30 +0000 Subject: [PATCH] * fix tthumbcgarm.g_flags2reg, mov reg,#imm for thumb updates the flags git-svn-id: trunk@25426 - --- compiler/arm/cgcpu.pas | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/compiler/arm/cgcpu.pas b/compiler/arm/cgcpu.pas index c08492988d..0bba156f4e 100644 --- a/compiler/arm/cgcpu.pas +++ b/compiler/arm/cgcpu.pas @@ -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;