diff --git a/compiler/ncgld.pas b/compiler/ncgld.pas index 11e6587328..17d3dfe589 100644 --- a/compiler/ncgld.pas +++ b/compiler/ncgld.pas @@ -75,6 +75,7 @@ implementation aasmbase, cgbase,pass_2, procinfo, + cpuinfo, cpubase,parabase, tgobj, cgobj,hlcgobj, @@ -878,7 +879,12 @@ implementation begin if (left.resultdef.typ=floatdef) and (right.resultdef.typ=floatdef) and - (left.location.size<>right.location.size) then + ((left.location.size<>right.location.size) + { on newer (1993+ :)) x86 cpus, use the fpu to copy extended values } +{$ifdef x86} + or ({$ifndef x86_64}(current_settings.cputype>=cpu_Pentium) and{$endif x86_64} (is_extended(right.resultdef))) +{$endif x86} + )then begin { assume that all float types can be handed by the fpu if one can be handled by the fpu }