Преглед изворни кода

* forgot call to cg.g_overflowcheck() in nppcadd
* fixed overflow flag definition
* fixed cg.g_overflowcheck() for signed numbers (jump over call to
FPC_OVERFLOW if *no* overflow instead of if overflow :)

Jonas Maebe пре 22 година
родитељ
комит
8c11916462
3 измењених фајлова са 29 додато и 8 уклоњено
  1. 8 2
      compiler/powerpc/cgcpu.pas
  2. 12 4
      compiler/powerpc/cpubase.pas
  3. 9 2
      compiler/powerpc/nppcadd.pas

+ 8 - 2
compiler/powerpc/cgcpu.pas

@@ -2102,7 +2102,7 @@ const
                                                   bool8bit,bool16bit,bool32bit]))) then
            begin
              list.concat(taicpu.op_reg(A_MCRXR,NR_CR7));
-             a_jmp(list,A_BC,C_OV,7,hl)
+             a_jmp(list,A_BC,C_NO,7,hl)
            end
          else
            a_jmp_cond(list,OC_AE,hl);
@@ -2471,7 +2471,13 @@ begin
 end.
 {
   $Log$
-  Revision 1.143  2003-12-07 21:59:21  florian
+  Revision 1.144  2003-12-09 20:39:43  jonas
+    * forgot call to cg.g_overflowcheck() in nppcadd
+    * fixed overflow flag definition
+    * fixed cg.g_overflowcheck() for signed numbers (jump over call to
+      FPC_OVERFLOW if *no* overflow instead of if overflow :)
+
+  Revision 1.143  2003/12/07 21:59:21  florian
     * a_load_ref_ref isn't allowed to be used in g_stackframe_entry
 
   Revision 1.142  2003/12/06 22:13:53  jonas

+ 12 - 4
compiler/powerpc/cpubase.pas

@@ -158,9 +158,11 @@ uses
 
     const
       { these are in the XER, but when moved to CR_x they correspond with the }
-      { bits below (still needs to be verified!!!)                            }
-      C_OV = C_EQ;
-      C_CA = C_GT;
+      { bits below                                                            }
+      C_OV = C_GT;
+      C_CA = C_EQ;
+      C_NO = C_NG;
+      C_NC = C_NE;
 
     type
       TAsmCond = packed record
@@ -692,7 +694,13 @@ implementation
 end.
 {
   $Log$
-  Revision 1.79  2003-11-29 16:27:19  jonas
+  Revision 1.80  2003-12-09 20:39:43  jonas
+    * forgot call to cg.g_overflowcheck() in nppcadd
+    * fixed overflow flag definition
+    * fixed cg.g_overflowcheck() for signed numbers (jump over call to
+      FPC_OVERFLOW if *no* overflow instead of if overflow :)
+
+  Revision 1.79  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??)

+ 9 - 2
compiler/powerpc/nppcadd.pas

@@ -1445,8 +1445,9 @@ interface
                  end;
                  exprasmlist.concat(taicpu.op_reg_reg_reg(op,location.register,
                    left.location.register,right.location.register));
+                 cg.g_overflowcheck(exprasmlist,location,resulttype.def);
               end
-            else
+             else
               begin
                 case nodetype of
                   addn:
@@ -1489,7 +1490,13 @@ begin
 end.
 {
   $Log$
-  Revision 1.39  2003-12-08 21:18:44  jonas
+  Revision 1.40  2003-12-09 20:39:43  jonas
+    * forgot call to cg.g_overflowcheck() in nppcadd
+    * fixed overflow flag definition
+    * fixed cg.g_overflowcheck() for signed numbers (jump over call to
+      FPC_OVERFLOW if *no* overflow instead of if overflow :)
+
+  Revision 1.39  2003/12/08 21:18:44  jonas
     * fixed usigned overflow checking
 
   Revision 1.38  2003/10/17 14:52:07  peter