Parcourir la source

* use extended as default real type in calculations only if fputype=x87

git-svn-id: trunk@15750 -
florian il y a 15 ans
Parent
commit
66571ee4c8
2 fichiers modifiés avec 9 ajouts et 1 suppressions
  1. 1 0
      compiler/cgobj.pas
  2. 8 1
      compiler/nadd.pas

+ 1 - 0
compiler/cgobj.pas

@@ -1115,6 +1115,7 @@ implementation
            end;
       end;
 
+
     procedure tcg.a_load_cgparaloc_ref(list : TAsmList;const paraloc : TCGParaLocation;const ref : treference;sizeleft : aint;align : longint);
       var
         href : treference;

+ 8 - 1
compiler/nadd.pas

@@ -889,7 +889,14 @@ implementation
         { is one a real float, then both need to be floats, this
           need to be done before the constant folding so constant
           operation on a float and int are also handled }
-        resultrealdef:=pbestrealtype^;
+{$ifdef x86}
+        { use extended as default real type only when the x87 fpu is used }
+        if not(current_settings.fputype=fpu_x87) then
+          resultrealdef:=s64floattype
+        else
+{$endif x86}
+          resultrealdef:=pbestrealtype^;
+
         if (right.resultdef.typ=floatdef) or (left.resultdef.typ=floatdef) then
          begin
            { when both floattypes are already equal then use that