This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [3.2, mainline] Fix for g77.f-torture/execute/f90-intrinsic-numeric.f on x86-64

> Jan Hubicka wrote:
> >Hi,
> >g77.f-torture/execute/f90-intrinsic-numeric.f fails to compile on x86-64
> >because it uses TFmode for converting fp->integer in unsigned way and later
> >promotes the TFmode argument to be constant in CSE.  CSE attempts to force
> >constant into memory in order to make instruction match that needs to get
> >constant_alignment, for that it needs type of the constants that gets into
> >ffe_type_for_mode that returns NULL and we get nice crash.
> >
> >This patch fixes the problem by adding long_double_type_node to it.
> >
> >Bootstrapped/regtested 3.2 release and mainline.  OK for 3.2 branch and 
> >mainline?
> As far as mainline is concerned, this patch is OK with me.  BTW, doesn't 
> long_double_type_node mean different things on different hardware (i.e., 
>  isn't a long double 80 bits on a plain x86 ?)

Yes, it has different mode and different size, however the i386 backend
is condigured in a way that it never allows TFmode in 32bit compilation
and XFmode in 64bit compilation exactly for the reason that typing
doesn't work.
In longer term, I would like to have GCC fixed to allow multiple FP
representations, but that is a lot of work.
(both x86_64 and IA-64 defines long double to be 128bit but use only
80bit format, while they allows __float128 too that is fully 128bit type
that brings us trouble). The fix is involved.

> -- 
> Toon Moene - - phoneto: +31 346 214290
> Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
> Maintainer, GNU Fortran 77:
> Join GNU Fortran 95: (under construction)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]