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:02:33 +0000 (09:02 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 13 Nov 2018 09:02:33 +0000 (09:02 +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: r266057

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

index ee8ba62756af508f78927d6a684a7cd026bed002..5577ddb485851d88c3e8870b32627431aa165753 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 eadbd36f4a36e611b8b03594a5cc41e5c31934e2..53913c252d8db3e2ca152bbda138c9ac6bc90364 100644 (file)
@@ -405,10 +405,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;