Selaa lähdekoodia

* disable 32 bit operation optimization for powerpc64

git-svn-id: trunk@25979 -
florian 11 vuotta sitten
vanhempi
commit
bbabb77ec9
2 muutettua tiedostoa jossa 11 lisäystä ja 2 poistoa
  1. 1 0
      compiler/fpcdefs.inc
  2. 10 2
      compiler/ncnv.pas

+ 1 - 0
compiler/fpcdefs.inc

@@ -136,6 +136,7 @@
   {$define cpurox}
   {$define cpurox}
   {$define cpurefshaveindexreg}
   {$define cpurefshaveindexreg}
   {$define fpc_compiler_has_fixup_jmps}
   {$define fpc_compiler_has_fixup_jmps}
+  {$define cpuno32bitops}
 {$endif powerpc64}
 {$endif powerpc64}
 
 
 {$ifdef arm}
 {$ifdef arm}

+ 10 - 2
compiler/ncnv.pas

@@ -2437,6 +2437,11 @@ implementation
         result:=typecheck_call_helper(convtype);
         result:=typecheck_call_helper(convtype);
       end;
       end;
 
 
+{ some code generators for 64 bit CPUs might not support 32 bit operations, so we can
+  disable the following optimization in fpcdefs.inc. Currently the only CPU for which
+  this applies is powerpc64
+}
+{$ifdef CPUNO32BITOPS}
     { checks whether we can safely remove 64 bit typeconversions
     { checks whether we can safely remove 64 bit typeconversions
       in case range and overflow checking are off, and in case
       in case range and overflow checking are off, and in case
       the result of this node tree is downcasted again to a
       the result of this node tree is downcasted again to a
@@ -2553,12 +2558,14 @@ implementation
             end;
             end;
         end;
         end;
       end;
       end;
-
+{$endif CPUNO32BITOPS}
 
 
     function ttypeconvnode.simplify(forinline : boolean): tnode;
     function ttypeconvnode.simplify(forinline : boolean): tnode;
       var
       var
         hp: tnode;
         hp: tnode;
+{$ifdef CPUNO32BITOPS}
         foundsint: boolean;
         foundsint: boolean;
+{$endif CPUNO32BITOPS}
       begin
       begin
         result := nil;
         result := nil;
         { Constant folding and other node transitions to
         { Constant folding and other node transitions to
@@ -2732,7 +2739,7 @@ implementation
                 end;
                 end;
             end;
             end;
         end;
         end;
-
+{$ifdef CPUNO32BITOPS}
         { must be done before code below, because we need the
         { must be done before code below, because we need the
           typeconversions for ordconstn's as well }
           typeconversions for ordconstn's as well }
         case convtype of
         case convtype of
@@ -2751,6 +2758,7 @@ implementation
                 end;
                 end;
             end;
             end;
         end;
         end;
+{$endif CPUNO32BITOPS}
       end;
       end;