Переглянути джерело

* disable 32 bit operation optimization for powerpc64

git-svn-id: trunk@25979 -
florian 11 роки тому
батько
коміт
bbabb77ec9
2 змінених файлів з 11 додано та 2 видалено
  1. 1 0
      compiler/fpcdefs.inc
  2. 10 2
      compiler/ncnv.pas

+ 1 - 0
compiler/fpcdefs.inc

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

+ 10 - 2
compiler/ncnv.pas

@@ -2437,6 +2437,11 @@ implementation
         result:=typecheck_call_helper(convtype);
       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
       in case range and overflow checking are off, and in case
       the result of this node tree is downcasted again to a
@@ -2553,12 +2558,14 @@ implementation
             end;
         end;
       end;
-
+{$endif CPUNO32BITOPS}
 
     function ttypeconvnode.simplify(forinline : boolean): tnode;
       var
         hp: tnode;
+{$ifdef CPUNO32BITOPS}
         foundsint: boolean;
+{$endif CPUNO32BITOPS}
       begin
         result := nil;
         { Constant folding and other node transitions to
@@ -2732,7 +2739,7 @@ implementation
                 end;
             end;
         end;
-
+{$ifdef CPUNO32BITOPS}
         { must be done before code below, because we need the
           typeconversions for ordconstn's as well }
         case convtype of
@@ -2751,6 +2758,7 @@ implementation
                 end;
             end;
         end;
+{$endif CPUNO32BITOPS}
       end;