]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions for the runtime on platforms...
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 13 Nov 2018 09:03:34 +0000 (09:03 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 13 Nov 2018 09:03:34 +0000 (09:03 +0000)
* gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
for the runtime on platforms where System.Machine_Overflow is true.

From-SVN: r266059

gcc/ada/ChangeLog
gcc/ada/gcc-interface/misc.c

index 7f5333f79d6b407bf67763c1a689b3e62ac58300..d709c36718270993bf3224b949d2fb5911249ca8 100644 (file)
@@ -1,3 +1,8 @@
+2018-11-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
+       for the runtime on platforms where System.Machine_Overflow is true.
+
 2018-11-08  Eric Botcazou  <ebotcazou@adacore.com>
 
        * fe.h (Suppress_Checks): Declare.
index c9f1c7455315030873df0eb4b745997d2baf8414..d3f88d33475c445fcb208e237c49b61a4b79a17e 100644 (file)
@@ -409,10 +409,15 @@ gnat_init_gcc_eh (void)
      as permitted in Ada.
      Turn off -faggressive-loop-optimizations because it may optimize away
      out-of-bound array accesses that we want to be able to catch.
-     If checks are disabled, we use the same settings as the C++ compiler.  */
+     If checks are disabled, we use the same settings as the C++ compiler,
+     except for the runtime on platforms where S'Machine_Overflow is true
+     because the runtime depends on FP (hardware) checks being properly
+     handled despite being compiled in -gnatp mode.  */
   flag_exceptions = 1;
   flag_delete_dead_exceptions = 1;
-  if (!Suppress_Checks)
+  if (Suppress_Checks)
+    flag_non_call_exceptions = Machine_Overflows_On_Target && GNAT_Mode;
+  else
     {
       flag_non_call_exceptions = 1;
       flag_aggressive_loop_optimizations = 0;