|
@@ -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;
|
|
|
|
|
|
|