This is the mail archive of the gcc-patches@gcc.gnu.org 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: [fortran, patch] IEEE intrinsic modules (ping)


Here’s a patch fixing the diff issue with configure.host and the doc (which apparently is only triggered by some versions of texinfo).
Apart from that, functionnaly identical, so I’ll paste here the “history” of the patch:

---------------------------------------------------

Since last time, I incorporated Uros’ comments on the libgfortran/config/fpu-387.h part, and add some documentation to the manual (list of supported targets, and required compilation flags for full IEE support).

OK to commit?

FX



> Hi,
> 
> Last November, I worked on a patch to add the IEEE intrinsic modules to gfortran (thread starting at 
> https://gcc.gnu.org/ml/fortran/2013-11/msg00126.html
> ). After a round of review, I continued working on it, then didn’t have time, then development was frozen… Now, I found some time to get back to it, and here’s a more complete patch. I’ve bootstrapped it and regtested on:
> 
>  – x86_64-linux (both 32-bit and 64-bit); this also uses 387/SSE assembler
>  – x86_64-linux with tweaked configure.host to force it to use glibc functions in config/fpu-glibc.h (both 32-bit and 64-bit)
> 
> The current state of the patch: as far as I can tell, nearly full support. In particular, since my last patch, I’ve added “saving/restoring FPU state on procedure entry/exit, when IEEE is used”. This is done in trans-decl.c, by wrapping each affected function body between calls to the library:
> 
>  try
>    {
>      _gfortran_ieee_procedure_entry ((void *) &fpstate.0);
>      /* procedure body goes here */
>    }
>  finally
>    {
>      _gfortran_ieee_procedure_exit ((void *) &fpstate.0);
>    }
> 
> 
> 
> What’s missing:
> 
>  0. Gradual underflow control is implemented as "not supported by the processor" (its SUPPORT function returns false, and the GET and SET procedures abort if you call them). That’s explicitly allowed by the standard, so it’s not actually “missing". We can improve on this in the future, if people can help.
> 
>  1. Documenting the flags necessary for full IEEE compatibility: it seems that "-fno-unsafe-math-optimizations -frounding-math -fsignaling-nans” is good, but I’ll have to check that with the floating-point middle-end experts. That’s next on my list: documenting our support, and interaction with compilation flags.
> 
>  2. Your review of the patch!
> 
> 
> I really think getting IEEE support early in stage 1 will benefit the compiler, through good testing before release. I’d like to get this in, but I don’t intend to disappear afterwards… though I’m not stepping back “full time” into the team, I will be there to fix IEEE bugs and issues.
> 
> OK to commit?
> 
> FX


Attachment: ieee_2.ChangeLog
Description: Binary data

Attachment: ieee_withregenerated_2.diff
Description: Binary data

Attachment: ieee_2.diff
Description: Binary data





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