Explorar o código

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

git-svn-id: trunk@25426 -
florian %!s(int64=12) %!d(string=hai) anos
pai
achega
36e6f99843
Modificáronse 1 ficheiros con 8 adicións e 5 borrados
  1. 8 5
      compiler/arm/cgcpu.pas

+ 8 - 5
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;