Browse Source

* fixed compilation problems

Jonas Maebe 23 years ago
parent
commit
10c4e8eb15
2 changed files with 15 additions and 19 deletions
  1. 5 15
      compiler/powerpc/cgcpu.pas
  2. 10 4
      compiler/powerpc/nppcadd.pas

+ 5 - 15
compiler/powerpc/cgcpu.pas

@@ -92,9 +92,6 @@ unit cgcpu;
         { that's the case, we can use rlwinm to do an AND operation        }
         function get_rlwi_const(a: longint; var l1, l2: longint): boolean;
 
-        procedure g_push_exception(list : taasmoutput;const exceptbuf:treference;l:AWord; exceptlabel:TAsmLabel);override;
-        procedure g_pop_exception(list : taasmoutput;endexceptlabel:tasmlabel);override;
-
         procedure g_save_standard_registers(list : taasmoutput);override;
         procedure g_restore_standard_registers(list : taasmoutput);override;
         procedure g_save_all_registers(list : taasmoutput);override;
@@ -483,7 +480,7 @@ const
                 end;
                 exit;
               end
-            else if (longint(a) >= 0)) and
+            else if (longint(a) >= 0) and
                (longint(a) <= high(word)) and
                (op <> OP_ADD) and
                ((op <> OP_AND) or
@@ -641,16 +638,6 @@ const
         end;
 
 
-     procedure tcgppc.g_push_exception(list : taasmoutput;const exceptbuf:treference;l:AWord; exceptlabel:TAsmLabel);
-       begin
-         {$warning FIX ME}
-       end;
-
-     procedure tcgppc.g_pop_exception(list : taasmoutput;endexceptlabel:tasmlabel);
-       begin
-         {$warning FIX ME}
-       end;
-
      procedure tcgppc.g_save_standard_registers(list : taasmoutput);
        begin
          {$warning FIX ME}
@@ -1458,7 +1445,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.33  2002-08-04 12:57:55  jonas
+  Revision 1.34  2002-08-05 08:58:53  jonas
+    * fixed compilation problems
+
+  Revision 1.33  2002/08/04 12:57:55  jonas
     * more misc. fixes, mostly constant-related
 
   Revision 1.32  2002/08/02 11:10:42  jonas

+ 10 - 4
compiler/powerpc/nppcadd.pas

@@ -206,7 +206,7 @@ interface
                   (right.location.value > high(word))) or
                  (not unsigned and
                   (right.location.value < low(smallint)) or
-                   (right.location.value > high(smallint)))) then
+                   (right.location.value > high(smallint))) then
                 // we can then maybe use a constant in the 'othersigned' case
                 // (the sign doesn't matter for // equal/unequal)
                 unsigned := not unsigned;
@@ -625,8 +625,11 @@ interface
               tmpreg := cg.get_scratch_reg_int(exprasmlist);
               if left.location.loc = LOC_CONSTANT then
                 begin
-                  cg.a_op_const_reg_reg(exprasmlist,OP_AND_,OS_INT,
-                    not(aword(left.location.value)),right.location.register,tmpreg);
+                  cg.a_op_const_reg_reg(exprasmlist,OP_AND,OS_INT,
+                    not(left.location.value),right.location.register,tmpreg);
+                  exprasmlist.concat(taicpu.op_reg_const(A_CMPWI,tmpreg,0));
+                  // the two instructions above should be folded together by
+                  // the peepholeoptimizer
                 end
               else
                 begin
@@ -1299,7 +1302,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.4  2002-08-04 12:57:56  jonas
+  Revision 1.5  2002-08-05 08:58:54  jonas
+    * fixed compilation problems
+
+  Revision 1.4  2002/08/04 12:57:56  jonas
     * more misc. fixes, mostly constant-related
 
   Revision 1.3  2002/07/28 16:02:49  jonas