Make C2X imply -fno-fp-int-builtin-inexact.
authorJoseph Myers <joseph@codesourcery.com>
Tue, 8 Oct 2019 00:37:45 +0000 (01:37 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Tue, 8 Oct 2019 00:37:45 +0000 (01:37 +0100)
Since TS 18661-1 has been integrated into C2X, this patch makes C2X
imply -fno-fp-int-builtin-inexact.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc:
* doc/invoke.texi (-ffp-int-builtin-inexact): Document
-fno-fp-int-builtin-inexact default for C2X.

gcc/c-family:
* c-opts.c (c_common_post_options): Set
-fno-fp-int-builtin-inexact for C2X.

gcc/testsuite:
* gcc.dg/torture/builtin-fp-int-inexact-c2x.c: New test.

From-SVN: r276686

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/builtin-fp-int-inexact-c2x.c [new file with mode: 0644]

index 51edea9788cce40dfe2d41d9a54960061d788af5..23e0a259e0c60524ce37e4153790c6b21b5e4c00 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-08  Joseph Myers  <joseph@codesourcery.com>
+
+       * doc/invoke.texi (-ffp-int-builtin-inexact): Document
+       -fno-fp-int-builtin-inexact default for C2X.
+
 2019-10-07  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
            Richard Biener  <rguenther@suse.de>
 
index 7deaff065cf0f6d626afbd81522f032212be7253..93077ff7c0e550175dc06b72e6679f6c8cb4236e 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-08  Joseph Myers  <joseph@codesourcery.com>
+
+       * c-opts.c (c_common_post_options): Set
+       -fno-fp-int-builtin-inexact for C2X.
+
 2019-10-05  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/91369 - Implement P0784R7: constexpr new
index 949d96a78396e6577b9af27f89d07dc6e488ab63..4ad24bd3ea04b87b6f676ad1bb085d4dba0d4ee4 100644 (file)
@@ -826,6 +826,12 @@ c_common_post_options (const char **pfilename)
   else
     flag_permitted_flt_eval_methods = PERMITTED_FLT_EVAL_METHODS_C11;
 
+  /* C2X Annex F does not permit certain built-in functions to raise
+     "inexact".  */
+  if (flag_isoc2x
+      && !global_options_set.x_flag_fp_int_builtin_inexact)
+    flag_fp_int_builtin_inexact = 0;
+
   /* By default we use C99 inline semantics in GNU99 or C99 mode.  C99
      inline semantics are not supported in GNU89 or C89 mode.  */
   if (flag_gnu89_inline == -1)
index 107793084b28a565ecfbb24cf9a8d5cb73323861..20e10c018048c8404a96dd01fc6bf6aafa755725 100644 (file)
@@ -10809,12 +10809,12 @@ Do not allow the built-in functions @code{ceil}, @code{floor},
 double} variants, to generate code that raises the ``inexact''
 floating-point exception for noninteger arguments.  ISO C99 and C11
 allow these functions to raise the ``inexact'' exception, but ISO/IEC
-TS 18661-1:2014, the C bindings to IEEE 754-2008, does not allow these
-functions to do so.
+TS 18661-1:2014, the C bindings to IEEE 754-2008, as integrated into
+ISO C2X, does not allow these functions to do so.
 
 The default is @option{-ffp-int-builtin-inexact}, allowing the
-exception to be raised.  This option does nothing unless
-@option{-ftrapping-math} is in effect.
+exception to be raised, unless C2X or a later C standard is selected.
+This option does nothing unless @option{-ftrapping-math} is in effect.
 
 Even if @option{-fno-fp-int-builtin-inexact} is used, if the functions
 generate a call to a library function then the ``inexact'' exception
index b55e272864abb8d0dd562ac4dafdc9d7335e5689..4555fc87f9f0677564fb72f8c17fe4245efbb792 100644 (file)
@@ -1,3 +1,7 @@
+2019-10-08  Joseph Myers  <joseph@codesourcery.com>
+
+       * gcc.dg/torture/builtin-fp-int-inexact-c2x.c: New test.
+
 2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
 
        * gcc.target/msp430/430x-insns.c: New test.
diff --git a/gcc/testsuite/gcc.dg/torture/builtin-fp-int-inexact-c2x.c b/gcc/testsuite/gcc.dg/torture/builtin-fp-int-inexact-c2x.c
new file mode 100644 (file)
index 0000000..039cb53
--- /dev/null
@@ -0,0 +1,7 @@
+/* Test C2X enables -fno-fp-int-builtin-inexact.  */
+/* { dg-do run } */
+/* { dg-options "-std=c2x" } */
+/* { dg-add-options c99_runtime } */
+/* { dg-require-effective-target fenv_exceptions } */
+
+#include "builtin-fp-int-inexact.c"