https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68499
Bug ID: 68499 Summary: Unclear STDC FP_CONTRACT behavior in non-standard modes Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: vincent-gcc at vinc17 dot net Target Milestone: --- Created attachment 36807 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36807&action=edit example of C program based on the STDC FP_CONTRACT pragma The following applies to: gcc (Debian 20151030-1) 6.0.0 20151031 (experimental) [trunk revision 229615] When I compile a C program like the attached one with #pragma STDC FP_CONTRACT OFF in a standard mode, the pragma is now taken into account as expected (see PR37845 / r204460). However, in a non-standard mode such as the default gnu99 (?), it is not taken into account (a FMA is generated for an operation like x*y+z), but one gets no warnings either. One should have one of the following behaviors in non-standard modes: 1. The pragma is taken into account. 2. The pragma is not taken into account, but one gets a warning (making it unknown in non-standard modes is OK). If possible, (1) is probably the best choice, at least in gnu99 and gnu11 modes, as the user may want to disable contraction for some floating-point algorithms while still being able to use specific GNU extensions.