Browse Source

* fixed writing of conditional branches which only depend on the value
of ctr

Jonas Maebe 22 years ago
parent
commit
8cb7f46d9c
1 changed files with 13 additions and 7 deletions
  1. 13 7
      compiler/powerpc/agppcgas.pas

+ 13 - 7
compiler/powerpc/agppcgas.pas

@@ -228,7 +228,7 @@ unit agppcgas;
               else
                 internalerror(2003112901);
             end;
-            cond2str:=cond2str++#9+tostr(c.bo)+','+tostr(c.bi);
+            cond2str:=cond2str++#9+tostr(c.bo)+','+tostr(c.bi)+',';
           end;
         true:
           if (op >= A_B) and (op <= A_BCLRL) then
@@ -245,7 +245,7 @@ unit agppcgas;
                     DH_None:
                       tempstr:=tempstr+#9;
                     DH_Minus:
-                      tempstr:=cond2str+('-'+#9);
+                      tempstr:=tempstr+('-'+#9);
                     DH_Plus:
                       tempstr:=tempstr+('+'+#9);
                     else
@@ -253,9 +253,11 @@ unit agppcgas;
                   end;
                   case c.cond of
                     C_LT..C_NU:
-                      cond2str := tempstr+gas_regname(newreg(R_SPECIALREGISTER,c.cr,R_SUBWHOLE));
-                    C_T..C_DZF:
-                      cond2str := tempstr+tostr(c.crbit);
+                      cond2str := tempstr+gas_regname(newreg(R_SPECIALREGISTER,c.cr,R_SUBWHOLE))+',';
+                    C_T,C_F,C_DNZT,C_DNZF,C_DZT,C_DZF:
+                      cond2str := tempstr+tostr(c.crbit)+',';
+                    else
+                      cond2str := tempstr;
                   end;
                 end;
             end
@@ -285,7 +287,7 @@ unit agppcgas;
              A_BCTR,A_BCTRL,A_BLR,A_BLRL:
                s:=#9+gas_op2str[op]
              else
-               s:=cond2str(op,taicpu(hp).condition)+',';
+               s:=cond2str(op,taicpu(hp).condition);
           end;
 
           if (taicpu(hp).ops>0) and (taicpu(hp).oper[0]^.typ<>top_none) then
@@ -321,7 +323,11 @@ begin
 end.
 {
   $Log$
-  Revision 1.35  2003-11-29 16:27:19  jonas
+  Revision 1.36  2003-11-29 18:17:26  jonas
+    * fixed writing of conditional branches which only depend on the value
+      of ctr
+
+  Revision 1.35  2003/11/29 16:27:19  jonas
     * fixed several ppc assembler reader related problems
     * local vars in assembler procedures now start at offset 4
     * fixed second_int_to_bool (apparently an integer can be in  LOC_JUMP??)