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)


ping*2

I understand the size of the patch can be somewhat off-putting, but given its nature it’s rather hard to split it further. Moreover, apart from the OS-specific bits on the library side, it’s not very difficult. If it is hard for anyone to find time to review it in full, may I suggest that it be given a lighter review before commit… then while it gets some real exposure from users/testers, further review can be performed.

FX




> ping for the IEEE 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?
> I’d really like to get this into trunk, so it can get some exposure to iron it out…
> 
> 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_2.diff
Description: Binary data

Attachment: ieee_withregenerated_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]