public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [Ada] Introduce a Frontend_Exceptions flag in system.ads
@ 2015-11-23 11:06 Olivier Hainque
  2015-11-23 11:31 ` Olivier Hainque
  0 siblings, 1 reply; 2+ messages in thread
From: Olivier Hainque @ 2015-11-23 11:06 UTC (permalink / raw)
  To: GCC Patches; +Cc: Olivier Hainque

[-- Attachment #1: Type: text/plain, Size: 5567 bytes --]

Hello,

The Ada compiler supports different sorts of exception schemes today. The two
most commonly used are what we commonly refer to as "frontend-sjlj", and
"gcc-zcx". The former is entirely managed by the front-end (gigi included),
relying on builtin_setjmp / builtin_longjmp pairs. The latter exposes the
exception related constructs to the middle-end, most often configured for
table based unwinding. We refer to table based schemes as "zero cost" with
respect to what happens in absence of propagation, hence the "zcx" abbrev
to denote "zero cost exceptions".

We can configure compilers to use the sjlj eh model as well but the front-end
internals aren't really prepared for this and this leads to bugs in some
circumstances.

The frontend perception of the EH scheme in use is currently controlled by the
"ZCX_By_Default" flag in system.ads. Very roughly, True is taken to denote
"gcc-zcx" and False conveys "frontend-sjlj". To allow proper support of
"gcc-sjlj", we introduce a "Frontend_Exceptions" flag and adjust the compiler
and runtimes accordingly.

This patch contains the front-end + Makefile part and a couple of adjustments
to the "tools", compensating for changes that were done preventively before,
when we had a different scheme in mind.

The compiler part involves a few general steps:
 - Adjust the possible values of the Exception_Scheme variable (opt)
 - Reflect this update in fe.h for gigi's consumption
 - Handle the new flag throughout (targparm, lib-writ, ali, bcheck, gnat1drv)
 - Adjust the abort_defer/abort_undefer call expansions to
   trigger for ZCX instead of back-end eh (exp_ch9, exp_ch11, exp_sel).
 - Adjust gigi to use the new mechanism values and helpers.
 
Then all the system.ads files will be updated with a correct value of the
Frontend_Exceptions flags.

Bootstrapped and regression tested on x86_64-linux-gnu. Committing to trunk.

Olivier

        * opt.ads (Exception_Mechanism): Now three values: Front_End_SJLJ,
        Back_End_SJLJ and Back_End_ZCX.
        (Back_End_Exceptions, Front_End_Exceptions, ZCX_Exceptions,
        SJLJ_Exceptions): New functions, reflecting properties of the current
        Exception_Mechanism.
        * opt.adb: Implement the new functions.
        * fe.h: Bind the new Exception_Mechanism and helper functions for gigi.
        
        * exp_ch11.adb (Expand_At_End_Handler): Replace test on mechanism by
        use of property helper and update comments.
        (Expand_Exception_Handlers): Replace tests on mechanism by use of
        helper. Restrict Abort_Defer to ZCX specifically.
        * exp_ch9.adb (Expand_N_Asynchronous_Select): Replace tests on
        mechanism by calls to helper functions. Abort_Undefer for ZCX only,
        paired with Expand_Exception_Handlers.
        * exp_sel.adb (Build_Abort_Block_Handler): Replace tests on mechanism
        by calls to helper functions. Abort_Undefer for ZCX only, paired with
        Expand_Exception_Handlers.
        
        * lib-writ.ads (P line documentation): Add entry for "FX",
        representative of unit compiled with Frontend_Exceptions True.
        * lib-writ.adb (Output_Main_Program_Line): Add "FX" on P line if
        compiled with Frontend_Exceptions True.
        
        * ali.ads (ALIs_Record): Ada a Frontend_Exceptions component, to reflect
        whether the ALI file contained an "FX" indication on the P line.
        (Frontend_Exceptions_Specified): New boolean, to keep track of whether
        at least an FX ALI file is in the closure.
        * ali.adb (Scan_ALI): Handle "FX" on the P line.
        (Initialize_ALI): Initialize Frontend_Exceptions_Specified to False.
        
        * targparm.ads: Update desription of exception schemes.
        (Frontend_Exceptions_On_Target): New flag, reflect Frontend_Exceptions
        set to True in system.ads, or not set at all.
        * targparm.adb (Targparm_Tags): Add FEX to convey Frontend_Exceptions.
        Rename ZCD to ZCX for consistency.
        (FEX_Str, Targparm_Str, Get_Target_Parameters): Adjust accordingly.
        
        * gnat1drv.adb (Adjust_Global_Switches): Adjust Exception_Mechanism
        setting, now from combination of Frontend_Exceptions and ZCX_By_Default.
        
        * bcheck.adb (Check_Consistent_Zero_Cost_Exception_Handling): Rename
        as ...
        (Check_Consistent_Exception_Handling): Check consistency of both
        ZCX_By_Default and Frontend_Exceptions.
        (Check_Configuration_Consistency): Check_Consistent_Exception_Handling
        if either flag was set at least once.
        
        * make.adb (Check): Remove processing of a possible -fsjlj coming from
        lang-specs.h.
        * gnatlink.adb (Gnatlin): Likewise.

        gcc-interface/

        * decl.c (gnat_to_gnu_entity, case E_Variable): Use eh property helper
        to test for back-end exceptions. Adjust mechanism name when testing for
        front-end sjlj.
        (case E_Procedure): Likewise.
        * trans.c (Handled_Sequence_Of_Statements_to_gnu): Likewise, and rename
        local variables.
        (Exception_Handler_to_gnu_sjlj): Rename as
        Exception_Handler_to_gnu_fe_sjlj.
        (Exception_Handler_to_gnu_zcx): Rename as
        Exception_Handler_to_gnu_gcc and adjust tests on eh mechanisms to use
        property helpers or correct mechanism name.
        * Makefile.in (gnatlib-sjlj/zcx): Now set both ZCX_By_Default and
        Frontend_Exceptions.


[-- Attachment #2: eh-flags-compiler.diff --]
[-- Type: application/octet-stream, Size: 36914 bytes --]

--- a/gcc/ada/ali.adb
+++ b/gcc/ada/ali.adb
@@ -119,6 +119,7 @@ package body ALI is
       Static_Elaboration_Model_Used          := False;
       Task_Dispatching_Policy_Specified      := ' ';
       Unreserve_All_Interrupts_Specified     := False;
+      Frontend_Exceptions_Specified          := False;
       Zero_Cost_Exceptions_Specified         := False;
    end Initialize_ALI;
 
@@ -900,6 +901,7 @@ package body ALI is
         Unit_Exception_Table         => False,
         Ver                          => (others => ' '),
         Ver_Len                      => 0,
+        Frontend_Exceptions          => False,
         Zero_Cost_Exceptions         => False);
 
       --  Now we acquire the input lines from the ALI file. Note that the
@@ -1091,6 +1093,18 @@ package body ALI is
                ALIs.Table (Id).Partition_Elaboration_Policy :=
                  Partition_Elaboration_Policy_Specified;
 
+            --  Processing for FX
+
+            elsif C = 'F' then
+               C := Getc;
+
+               if C = 'X' then
+                  ALIs.Table (Id).Frontend_Exceptions := True;
+                  Frontend_Exceptions_Specified := True;
+               else
+                  Fatal_Error_Ignore;
+               end if;
+
             --  Processing for GP
 
             elsif C = 'G' then
diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads
index 8dc87bb..96f6bd5 100644
--- a/gcc/ada/ali.ads
+++ b/gcc/ada/ali.ads
@@ -199,6 +199,10 @@ package ALI is
       --  Set to True if unit exception table pointer generated. Not set if 'P'
       --  appears in Ignore_Lines.
 
+      Frontend_Exceptions : Boolean;
+      --  Set to True if file was compiled with front-end exceptions. Not set
+      --  if 'P' appears in Ignore_Lines.
+
       Zero_Cost_Exceptions : Boolean;
       --  Set to True if file was compiled with zero cost exceptions. Not set
       --  if 'P' appears in Ignore_Lines.
@@ -474,6 +478,10 @@ package ALI is
    --  Set to False by Initialize_ALI. Set to True if Scan_ALI reads
    --  a unit for which dynamic elaboration checking is enabled.
 
+   Frontend_Exceptions_Specified : Boolean := False;
+   --  Set to False by Initialize_ALI. Set to True if an ali file is read that
+   --  has a P line specifying the generation of front-end exceptions.
+
    GNATprove_Mode_Specified : Boolean := False;
    --  Set to True if an ali file was produced in GNATprove mode.
 
diff --git a/gcc/ada/bcheck.adb b/gcc/ada/bcheck.adb
index 8f00ea2..fcfb2f4 100644
--- a/gcc/ada/bcheck.adb
+++ b/gcc/ada/bcheck.adb
@@ -56,7 +56,7 @@ package body Bcheck is
    procedure Check_Consistent_Restrictions;
    procedure Check_Consistent_Restriction_No_Default_Initialization;
    procedure Check_Consistent_SSO_Default;
-   procedure Check_Consistent_Zero_Cost_Exception_Handling;
+   procedure Check_Consistent_Exception_Handling;
 
    procedure Consistency_Error_Msg (Msg : String);
    --  Produce an error or a warning message, depending on whether an
@@ -88,8 +88,10 @@ package body Bcheck is
          Check_Consistent_SSO_Default;
       end if;
 
-      if Zero_Cost_Exceptions_Specified then
-         Check_Consistent_Zero_Cost_Exception_Handling;
+      if Zero_Cost_Exceptions_Specified
+        or else Frontend_Exceptions_Specified
+      then
+         Check_Consistent_Exception_Handling;
       end if;
 
       Check_Consistent_Normalize_Scalars;
@@ -1164,18 +1166,20 @@ package body Bcheck is
       end loop;
    end Check_Consistent_SSO_Default;
 
-   ---------------------------------------------------
-   -- Check_Consistent_Zero_Cost_Exception_Handling --
-   ---------------------------------------------------
+   -----------------------------------------
+   -- Check_Consistent_Exception_Handling --
+   -----------------------------------------
 
-   --  Check consistent zero cost exception handling. The rule is that
-   --  all units must have the same exception handling mechanism.
+   --  All units must have the same exception handling mechanism.
 
-   procedure Check_Consistent_Zero_Cost_Exception_Handling is
+   procedure Check_Consistent_Exception_Handling is
    begin
       Check_Mechanism : for A1 in ALIs.First + 1 .. ALIs.Last loop
-         if ALIs.Table (A1).Zero_Cost_Exceptions /=
-            ALIs.Table (ALIs.First).Zero_Cost_Exceptions
+         if (ALIs.Table (A1).Zero_Cost_Exceptions /=
+             ALIs.Table (ALIs.First).Zero_Cost_Exceptions)
+           or else
+            (ALIs.Table (A1).Frontend_Exceptions /=
+             ALIs.Table (ALIs.First).Frontend_Exceptions)
          then
             Error_Msg_File_1 := ALIs.Table (A1).Sfile;
             Error_Msg_File_2 := ALIs.Table (ALIs.First).Sfile;
@@ -1184,7 +1188,7 @@ package body Bcheck is
                                             & "exception handling mechanisms");
          end if;
       end loop Check_Mechanism;
-   end Check_Consistent_Zero_Cost_Exception_Handling;
+   end Check_Consistent_Exception_Handling;
 
    -------------------------------
    -- Check_Duplicated_Subunits --
diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb
index cd33300..89dd350 100644
--- a/gcc/ada/exp_ch11.adb
+++ b/gcc/ada/exp_ch11.adb
@@ -116,9 +116,10 @@ package body Exp_Ch11 is
       pragma Assert (Present (Clean));
       pragma Assert (No (Exception_Handlers (HSS)));
 
-      --  Don't expand if back end exception handling active
+      --  Back end exception schemes don't need explicit handlers to
+      --  trigger AT-END actions on exceptional paths.
 
-      if Exception_Mechanism = Back_End_Exceptions then
+      if Back_End_Exceptions then
          return;
       end if;
 
@@ -1025,11 +1026,12 @@ package body Exp_Ch11 is
                --        ...
                --     end;
 
-               --  This expansion is not performed when using GCC ZCX. Gigi
-               --  will insert a call to initialize the choice parameter.
+               --  This expansion is only performed when using front-end
+               --  exceptions. Gigi will insert a call to initialize the
+               --  choice parameter.
 
                if Present (Choice_Parameter (Handler))
-                 and then (Exception_Mechanism /= Back_End_Exceptions
+                 and then (Front_End_Exceptions
                             or else CodePeer_Mode)
                then
                   declare
@@ -1102,7 +1104,7 @@ package body Exp_Ch11 is
                --  are allowed.
 
                if Abort_Allowed
-                 and then Exception_Mechanism /= Back_End_Exceptions
+                 and then not ZCX_Exceptions
                then
                   --  There are some special cases in which we do not do the
                   --  undefer. In particular a finalization (AT END) handler
@@ -1719,7 +1721,7 @@ package body Exp_Ch11 is
          --  code which can be formally analyzed.
 
          if not CodePeer_Mode
-           and then Exception_Mechanism = Back_End_Exceptions
+           and then Back_End_Exceptions
          then
             return;
          end if;
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb
index 07dfb9b..11294ed 100644
--- a/gcc/ada/exp_ch9.adb
+++ b/gcc/ada/exp_ch9.adb
@@ -7785,9 +7785,9 @@ package body Exp_Ch9 is
              Is_Asynchronous_Call_Block => True);
 
          --  Aborts are not deferred at beginning of exception handlers in
-         --  ZCX.
+         --  ZCX mode.
 
-         if Exception_Mechanism = Back_End_Exceptions then
+         if ZCX_Exceptions then
             Handler_Stmt := Make_Null_Statement (Loc);
 
          else
diff --git a/gcc/ada/exp_sel.adb b/gcc/ada/exp_sel.adb
index 5bf33bc2..06895d7 100644
--- a/gcc/ada/exp_sel.adb
+++ b/gcc/ada/exp_sel.adb
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -73,15 +73,14 @@ package body Exp_Sel is
       Stmt : Node_Id;
 
    begin
-      if Exception_Mechanism = Back_End_Exceptions then
 
-         --  With ZCX, aborts are not defered in handlers
+      --  With ZCX exceptions, aborts are not defered in handlers. With SJLJ,
+      --  they are deferred at the beginning of Abort_Signal handlers.
 
+      if ZCX_Exceptions then
          Stmt := Make_Null_Statement (Loc);
-      else
-         --  With FE SJLJ, aborts are defered at the beginning of Abort_Signal
-         --  handlers.
 
+      else
          Stmt :=
            Make_Procedure_Call_Statement (Loc,
              Name => New_Occurrence_Of (RTE (RE_Abort_Undefer), Loc),
diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h
index 36befa6..e9c3721 100644
--- a/gcc/ada/fe.h
+++ b/gcc/ada/fe.h
@@ -178,7 +178,9 @@ extern Boolean In_Same_Source_Unit              (Node_Id, Node_Id);
 #define List_Representation_Info       opt__list_representation_info
 #define No_Strict_Aliasing_CP          opt__no_strict_aliasing
 
-typedef enum {Setjmp_Longjmp, Back_End_Exceptions} Exception_Mechanism_Type;
+typedef enum {
+  Front_End_SJLJ, Back_End_ZCX, Back_End_SJLJ
+} Exception_Mechanism_Type;
 
 extern Boolean Back_End_Inlining;
 extern Boolean Exception_Extra_Info;
@@ -190,6 +192,16 @@ extern Boolean GNAT_Mode;
 extern Int List_Representation_Info;
 extern Boolean No_Strict_Aliasing_CP;
 
+#define ZCX_Exceptions            opt__zcx_exceptions
+#define SJLJ_Exceptions           opt__sjlj_exceptions
+#define Front_End_Exceptions      opt__front_end_exceptions
+#define Back_End_Exceptions       opt__back_end_exceptions
+
+extern Boolean ZCX_Exceptions       (void);
+extern Boolean SJLJ_Exceptions      (void);
+extern Boolean Front_End_Exceptions (void);
+extern Boolean Back_End_Exceptions  (void);
+
 /* restrict: */
 
 #define No_Exception_Handlers_Set      restrict__no_exception_handlers_set
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index 17e7d9c..b8ea585 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -527,9 +527,26 @@ procedure Gnat1drv is
 
       --  Set and check exception mechanism
 
-      if Targparm.ZCX_By_Default_On_Target then
-         Exception_Mechanism := Back_End_Exceptions;
-      end if;
+      case Targparm.Frontend_Exceptions_On_Target is
+         when True =>
+            case Targparm.ZCX_By_Default_On_Target is
+               when True =>
+                  Write_Line
+                    ("Run-time library configured incorrectly");
+                  Write_Line
+                    ("(requesting support for Frontend ZCX exceptions)");
+                  raise Unrecoverable_Error;
+               when False =>
+                  Exception_Mechanism := Front_End_SJLJ;
+            end case;
+         when False =>
+            case Targparm.ZCX_By_Default_On_Target is
+               when True =>
+                  Exception_Mechanism := Back_End_ZCX;
+               when False =>
+                  Exception_Mechanism := Back_End_SJLJ;
+            end case;
+      end case;
 
       --  Set proper status for overflow check mechanism
 
diff --git a/gcc/ada/gnatlink.adb b/gcc/ada/gnatlink.adb
index f0eb7e9..67b07b2 100644
--- a/gcc/ada/gnatlink.adb
+++ b/gcc/ada/gnatlink.adb
@@ -1565,13 +1565,6 @@ begin
                         Linker_Options.Increment_Last;
                         Linker_Options.Table
                           (Linker_Options.Last) := String_Access (Arg);
-
-                     elsif Arg'Length = 6
-                       and then Arg (Arg'First + 1 .. Arg'First + 5) = "fsjlj"
-                     then
-                        Linker_Options.Increment_Last;
-                        Linker_Options.Table
-                          (Linker_Options.Last) := String_Access (Arg);
                      end if;
 
                   elsif Arg'Length > 5
diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb
index dfa1a5b..e792565 100644
--- a/gcc/ada/lib-writ.adb
+++ b/gcc/ada/lib-writ.adb
@@ -1182,7 +1182,11 @@ package body Lib.Writ is
          Write_Info_Str (" UA");
       end if;
 
-      if Exception_Mechanism = Back_End_Exceptions then
+      if Front_End_Exceptions then
+         Write_Info_Str (" FX");
+      end if;
+
+      if ZCX_Exceptions then
          Write_Info_Str (" ZX");
       end if;
 
diff --git a/gcc/ada/lib-writ.ads b/gcc/ada/lib-writ.ads
index d135eac..dce65f0 100644
--- a/gcc/ada/lib-writ.ads
+++ b/gcc/ada/lib-writ.ads
@@ -192,6 +192,9 @@ package Lib.Writ is
    --              the units in this file, where x is the first character
    --              (upper case) of the policy name (e.g. 'C' for Concurrent).
 
+   --         FX  Units in this file use front-end exceptions, with explicit
+   --             handlers to trigger AT-END actions on exception paths.
+
    --         GP   Set if this compilation was done in GNATprove mode, either
    --              from direct use of GNATprove, or from use of -gnatdF.
 
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index f4bd63c..c5bf2b9 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -1798,9 +1798,7 @@ package body Make is
             --  according to the lang-specs.h.settings.
 
             for K in First_Arg .. Last_Arg loop
-               if Args.Table (K).all = "-mrtp"
-                  or else Args.Table (K).all = "-fsjlj"
-               then
+               if Args.Table (K).all = "-mrtp" then
                   Number_Of_Switches := Number_Of_Switches - 1;
                end if;
             end loop;
diff --git a/gcc/ada/opt.adb b/gcc/ada/opt.adb
index 6468096..213b6f4 100644
--- a/gcc/ada/opt.adb
+++ b/gcc/ada/opt.adb
@@ -38,6 +38,44 @@ package body Opt is
    SU : constant := Storage_Unit;
    --  Shorthand for System.Storage_Unit
 
+   -------------------------
+   -- Back_End_Exceptions --
+   -------------------------
+
+   function Back_End_Exceptions return Boolean is
+   begin
+      return Exception_Mechanism = Back_End_SJLJ
+        or else Exception_Mechanism = Back_End_ZCX;
+   end Back_End_Exceptions;
+
+   -------------------------
+   -- Front_End_Exceptions --
+   -------------------------
+
+   function Front_End_Exceptions return Boolean is
+   begin
+      return Exception_Mechanism = Front_End_SJLJ;
+   end Front_End_Exceptions;
+
+   --------------------
+   -- SJLJ_Exceptions --
+   --------------------
+
+   function SJLJ_Exceptions return Boolean is
+   begin
+      return Exception_Mechanism = Back_End_SJLJ
+        or else Exception_Mechanism = Front_End_SJLJ;
+   end SJLJ_Exceptions;
+
+   --------------------
+   -- ZCX_Exceptions --
+   --------------------
+
+   function ZCX_Exceptions return Boolean is
+   begin
+      return Exception_Mechanism = Back_End_ZCX;
+   end ZCX_Exceptions;
+
    ----------------------------------
    -- Register_Opt_Config_Switches --
    ----------------------------------
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index f9e4554..1766950 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -573,27 +573,41 @@ package Opt is
    --  currently active.
 
    type Exception_Mechanism_Type is
-   --  Determines the handling of exceptions. See Exp_Ch11 for details
+   --  Determines the kind of mechanism used to handle exceptions
    --
-     (Front_End_Setjmp_Longjmp_Exceptions,
+     (Front_End_SJLJ,
       --  Exceptions use setjmp/longjmp generated explicitly by the front end
       --  (this includes gigi or other equivalent parts of the code generator).
       --  AT END handlers are converted into exception handlers by the front
       --  end in this mode.
 
-      Back_End_Exceptions);
+      Back_End_ZCX,
       --  Exceptions are handled by the back end. The front end simply
       --  generates the handlers as they appear in the source, and AT END
       --  handlers are left untouched (they are not converted into exception
-      --  handlers when operating in this mode.
+      --  handlers when operating in this mode). Propagation is performed
+      --  using a frame unwinding scheme and requires no particular setup code
+      --  at handler sites on regular execution paths.
+
+      Back_End_SJLJ);
+      --  Similar to Back_End_ZCX with respect to the front-end processing
+      --  of regular and AT-END handlers. A setjmp/longjmp scheme is used to
+      --  propagate and setup handler contexts on regular execution paths.
+
    pragma Convention (C, Exception_Mechanism_Type);
 
-   Exception_Mechanism : Exception_Mechanism_Type :=
-                           Front_End_Setjmp_Longjmp_Exceptions;
+   Exception_Mechanism : Exception_Mechanism_Type := Front_End_SJLJ;
+   --  GNAT
+   --  Set to the appropriate value depending on the flags in system.ads
+   --  (Frontend_Exceptions + ZCX_By_Default). The C convention is there to
+   --  allow access by gigi.
+
+   function Back_End_Exceptions return Boolean;
+   function Front_End_Exceptions return Boolean;
+   function ZCX_Exceptions return Boolean;
+   function SJLJ_Exceptions return Boolean;
    --  GNAT
-   --  Set to the appropriate value depending on the default as given in
-   --  system.ads (ZCX_By_Default). The C convention is there to make this
-   --  variable accessible to gigi.
+   --  Various properties of the active Exception_Mechanism
 
    Exception_Tracebacks : Boolean := False;
    --  GNATBIND
diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb
index 33983c7..70bd061 100644
--- a/gcc/ada/targparm.adb
+++ b/gcc/ada/targparm.adb
@@ -49,6 +49,7 @@ package body Targparm is
       DEN,  --   Denorm
       EXS,  --   Exit_Status_Supported
       FEL,  --   Frontend_Layout
+      FEX,  --   Frontend_Exceptions
       FFO,  --   Fractional_Fixed_Ops
       MOV,  --   Machine_Overflows
       MRN,  --   Machine_Rounds
@@ -64,7 +65,7 @@ package body Targparm is
       SNZ,  --   Signed_Zeros
       SSL,  --   Suppress_Standard_Library
       UAM,  --   Use_Ada_Main_Program_Name
-      ZCD); --   ZCX_By_Default
+      ZCX); --   ZCX_By_Default
 
    Targparm_Flags : array (Targparm_Tags) of Boolean := (others => False);
    --  Flag is set True if corresponding parameter is scanned
@@ -82,6 +83,7 @@ package body Targparm is
    DEN_Str : aliased constant Source_Buffer := "Denorm";
    EXS_Str : aliased constant Source_Buffer := "Exit_Status_Supported";
    FEL_Str : aliased constant Source_Buffer := "Frontend_Layout";
+   FEX_Str : aliased constant Source_Buffer := "Frontend_Exceptions";
    FFO_Str : aliased constant Source_Buffer := "Fractional_Fixed_Ops";
    MOV_Str : aliased constant Source_Buffer := "Machine_Overflows";
    MRN_Str : aliased constant Source_Buffer := "Machine_Rounds";
@@ -97,7 +99,7 @@ package body Targparm is
    SNZ_Str : aliased constant Source_Buffer := "Signed_Zeros";
    SSL_Str : aliased constant Source_Buffer := "Suppress_Standard_Library";
    UAM_Str : aliased constant Source_Buffer := "Use_Ada_Main_Program_Name";
-   ZCD_Str : aliased constant Source_Buffer := "ZCX_By_Default";
+   ZCX_Str : aliased constant Source_Buffer := "ZCX_By_Default";
 
    --  The following defines a set of pointers to the above strings,
    --  indexed by the tag values.
@@ -115,6 +117,7 @@ package body Targparm is
       DEN_Str'Access,
       EXS_Str'Access,
       FEL_Str'Access,
+      FEX_Str'Access,
       FFO_Str'Access,
       MOV_Str'Access,
       MRN_Str'Access,
@@ -130,7 +133,7 @@ package body Targparm is
       SNZ_Str'Access,
       SSL_Str'Access,
       UAM_Str'Access,
-      ZCD_Str'Access);
+      ZCX_Str'Access);
 
    -----------------------
    -- Local Subprograms --
@@ -804,6 +807,7 @@ package body Targparm is
                      when DEN => Denorm_On_Target                    := Result;
                      when EXS => Exit_Status_Supported_On_Target     := Result;
                      when FEL => Frontend_Layout_On_Target           := Result;
+                     when FEX => Frontend_Exceptions_On_Target       := Result;
                      when FFO => Fractional_Fixed_Ops_On_Target      := Result;
                      when MOV => Machine_Overflows_On_Target         := Result;
                      when MRN => Machine_Rounds_On_Target            := Result;
@@ -819,7 +823,7 @@ package body Targparm is
                      when SSL => Suppress_Standard_Library_On_Target := Result;
                      when SNZ => Signed_Zeros_On_Target              := Result;
                      when UAM => Use_Ada_Main_Program_Name_On_Target := Result;
-                     when ZCD => ZCX_By_Default_On_Target            := Result;
+                     when ZCX => ZCX_By_Default_On_Target            := Result;
 
                      goto Line_Loop_Continue;
                   end case;
diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads
index ed24ea7..af2177d 100644
--- a/gcc/ada/targparm.ads
+++ b/gcc/ada/targparm.ads
@@ -234,66 +234,51 @@ package Targparm is
    --      This approach uses longjmp/setjmp to handle exceptions. It
    --      uses less storage, and can often propagate exceptions faster,
    --      at the expense of (sometimes considerable) overhead in setting
-   --      up an exception handler. This approach is available on all
-   --      targets, and is the default where it is the only approach.
+   --      up an exception handler.
 
    --      The generation of the setjmp and longjmp calls is handled by
    --      the front end of the compiler (this includes gigi in the case
    --      of the standard GCC back end). It does not use any back end
    --      support (such as the GCC3 exception handling mechanism). When
    --      this approach is used, the compiler generates special exception
-   --      handlers for handling cleanups when an exception is raised.
-
-   --    Front-End Zero Cost Exceptions
-
-   --      This approach uses separate exception tables. These use extra
-   --      storage, and exception propagation can be quite slow, but there
-   --      is no overhead in setting up an exception handler (it is to this
-   --      latter operation that the phrase zero-cost refers). This approach
-   --      is only available on some targets, and is the default where it is
-   --      available.
-
-   --      The generation of the exception tables is handled by the front
-   --      end of the compiler. It does not use any back end support (such
-   --      as the GCC3 exception handling mechanism). When this approach
-   --      is used, the compiler generates special exception handlers for
-   --      handling cleanups when an exception is raised.
+   --      handlers for handling cleanups (AT-END actions) when an exception
+   --      is raised.
 
    --    Back-End Zero Cost Exceptions
 
    --      With this approach, the back end handles the generation and
    --      handling of exceptions. For example, the GCC3 exception handling
    --      mechanisms are used in this mode. The front end simply generates
-   --      code for explicit exception handlers, and AT END cleanup handlers
+   --      code for explicit exception handlers, and AT-END cleanup handlers
    --      are simply passed unchanged to the backend for generating cleanups
    --      both in the exceptional and non-exceptional cases.
 
-   --      As the name implies, this approach generally uses a zero-cost
-   --      mechanism with tables, but the tables are generated by the back
-   --      end. However, since the back-end is entirely responsible for the
-   --      handling of exceptions, another mechanism might be used. In the
-   --      case of GCC3 for instance, it might be the case that the compiler
-   --      is configured for setjmp/longjmp handling, then everything will
-   --      work correctly. However, it is definitely preferred that the
-   --      back end provide zero cost exception handling.
+   --      As the name implies, this approach uses a table-based mechanism,
+   --      which incurs no setup when entering a region covered by handlers
+   --      but requires complex unwinding to walk up the call chain and search
+   --      for handlers at propagation time.
 
-   --    Controlling the selection of methods
+   --    Back-End Setjmp/Longjmp Exceptions
 
-   --      On most implementations, back-end zero-cost exceptions are used.
-   --      Otherwise, Front-End Longjmp/Setjmp approach is used.
-   --      Note that there is a requirement that all Ada units in a partition
-   --      be compiled with the same exception model.
+   --      With this approach, the back end also handles the generation and
+   --      handling of exceptions, using setjmp/longjmp to setup receivers and
+   --      propagate. AT-END actions on exceptional paths are also taken care
+   --      of by the back end and the front end doesn't need to generate
+   --      explicit exception handlers for these.
 
    --    Control of Available Methods and Defaults
 
-   --      The following switches specify whether ZCX is available, and
-   --      whether it is enabled by default.
+   --      The following switches specify whether we're using a front-end or a
+   --      back-end mechanism and whether this is a zero-cost or a sjlj scheme.
+
+   --      The per switch default values correspond to the default value of
+   --      Opt.Exception_Mechanism.
 
    ZCX_By_Default_On_Target : Boolean := False;
-   --  Indicates if zero cost exceptions are active by default. If this
-   --  variable is False, then the only possible exception method is the
-   --  front-end setjmp/longjmp approach, and this is the default. If
-   --  this variable is True, then GCC ZCX is used.
+   --  Indicates if zero cost scheme for exceptions
+
+   Frontend_Exceptions_On_Target : Boolean := True;
+   --  Indicates if we're using a front-end scheme for exceptions
 
    ------------------------------------
    -- Run-Time Library Configuration --
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -3008,10 +3008,12 @@ gnatlib-shared:
 gnatlib-sjlj:
 	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \
 	THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
-	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
-	sed -e 's/\(pragma Linker.*crtbe.*\)/--  \1/' $(RTSDIR)/s.ads > $(RTSDIR)/s2.ads
-	$(RM) $(RTSDIR)/s.ads
-	$(MV) $(RTSDIR)/s2.ads $(RTSDIR)/system.ads
+	sed \
+	  -e 's/Frontend_Exceptions.*/Frontend_Exceptions       : constant Boolean := True;/' \
+	  -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := False;/' \
+	  -e 's/\(pragma Linker.*crtbe.*\)/--  \1/' \
+	  $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
+	$(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
 	$(MAKE) $(FLAGS_TO_PASS) \
 	     EH_MECHANISM="" \
 	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
@@ -3025,7 +3027,10 @@ gnatlib-sjlj:
 gnatlib-zcx:
 	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="-gcc" \
 	  THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
-	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := True;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
+	sed \
+	  -e 's/Frontend_Exceptions.*/Frontend_Exceptions       : constant Boolean := False;/' \
+	  -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := True;/' \
+	  $(RTSDIR)/system.ads > $(RTSDIR)/s.ads
 	$(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads
 	$(MAKE) $(FLAGS_TO_PASS) \
 	     EH_MECHANISM="-gcc" \
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index 75e9e33..e328437 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -1501,7 +1501,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
 	   exception handler, and we aren't using the GCC exception mechanism,
 	   we must force this variable in memory in order to avoid an invalid
 	   optimization.  */
-	if (Exception_Mechanism != Back_End_Exceptions
+	if (Front_End_Exceptions ()
 	    && Has_Nested_Block_With_Handler (Scope (gnat_entity)))
 	  TREE_ADDRESSABLE (gnu_decl) = 1;
 
@@ -1520,9 +1520,10 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
 
 	/* If we are defining an object with variable size or an object with
 	   fixed size that will be dynamically allocated, and we are using the
-	   setjmp/longjmp exception mechanism, update the setjmp buffer.  */
+	   front-end setjmp/longjmp exception mechanism, update the setjmp
+	   buffer.  */
 	if (definition
-	    && Exception_Mechanism == Setjmp_Longjmp
+	    && Exception_Mechanism == Front_End_SJLJ
 	    && get_block_jmpbuf_decl ()
 	    && DECL_SIZE_UNIT (gnu_decl)
 	    && (TREE_CODE (DECL_SIZE_UNIT (gnu_decl)) != INTEGER_CST
@@ -4099,7 +4100,7 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
           trigger an "abnormal" transfer of control flow; thus they can be
           neither "const" nor "pure" in the back-end sense.  */
 	bool const_flag
-	  = (Exception_Mechanism == Back_End_Exceptions
+	  = (Back_End_Exceptions ()
 	     && Is_Pure (gnat_entity));
 	bool noreturn_flag = No_Return (gnat_entity);
 	bool return_by_direct_ref_p = false;
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 5ee82ec..8cfa1a2 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -646,7 +646,7 @@ gigi (Node_Id gnat_root,
       (TREE_STRING_POINTER (gnat_to_gnu (Ident_String (Main_Unit))));
 
   /* If we are using the GCC exception mechanism, let GCC know.  */
-  if (Exception_Mechanism == Back_End_Exceptions)
+  if (Back_End_Exceptions ())
     gnat_init_gcc_eh ();
 
   /* Initialize the GCC support for FP operations.  */
@@ -4923,14 +4923,14 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
   tree gnu_jmpsave_decl = NULL_TREE;
   tree gnu_jmpbuf_decl = NULL_TREE;
   /* If just annotating, ignore all EH and cleanups.  */
-  bool gcc_zcx = (!type_annotate_only
-		  && Present (Exception_Handlers (gnat_node))
-		  && Exception_Mechanism == Back_End_Exceptions);
-  bool setjmp_longjmp
+  bool gcc_eh = (!type_annotate_only
+                 && Present (Exception_Handlers (gnat_node))
+                 && Back_End_Exceptions ());
+  bool fe_sjlj
     = (!type_annotate_only && Present (Exception_Handlers (gnat_node))
-       && Exception_Mechanism == Setjmp_Longjmp);
+       && Exception_Mechanism == Front_End_SJLJ);
   bool at_end = !type_annotate_only && Present (At_End_Proc (gnat_node));
-  bool binding_for_block = (at_end || gcc_zcx || setjmp_longjmp);
+  bool binding_for_block = (at_end || gcc_eh || fe_sjlj);
   tree gnu_inner_block; /* The statement(s) for the block itself.  */
   tree gnu_result;
   tree gnu_expr;
@@ -4953,17 +4953,17 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
      condition to make it not ZCX specific.
 
      If there are any exceptions or cleanup processing involved, we need an
-     outer statement group (for Setjmp_Longjmp) and binding level.  */
+     outer statement group (for Fe_Sjlj) and binding level.  */
   if (binding_for_block)
     {
       start_stmt_group ();
       gnat_pushlevel ();
     }
 
-  /* If using setjmp_longjmp, make the variables for the setjmp buffer and save
+  /* If using fe_sjlj, make the variables for the setjmp buffer and save
      area for address of previous buffer.  Do this first since we need to have
      the setjmp buf known for any decls in this block.  */
-  if (setjmp_longjmp)
+  if (fe_sjlj)
     {
       gnu_jmpsave_decl
 	= create_var_decl (get_identifier ("JMPBUF_SAVE"), NULL_TREE,
@@ -4973,7 +4973,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
 			   NULL, gnat_node);
 
       /* The __builtin_setjmp receivers will immediately reinstall it.  Now
-	 because of the unstructured form of EH used by setjmp_longjmp, there
+	 because of the unstructured form of EH used by fe_sjlj, there
 	 might be forward edges going to __builtin_setjmp receivers on which
 	 it is uninitialized, although they will never be actually taken.  */
       TREE_NO_WARNING (gnu_jmpsave_decl) = 1;
@@ -5008,7 +5008,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
      If this is SJLJ, set our jmp_buf as the current buffer.  */
   start_stmt_group ();
 
-  if (setjmp_longjmp)
+  if (fe_sjlj)
     {
       gnu_expr = build_call_n_expr (set_jmpbuf_decl, 1,
 				    build_unary_op (ADDR_EXPR, NULL_TREE,
@@ -5031,7 +5031,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
 
   /* Now generate code for the two exception models, if either is relevant for
      this block.  */
-  if (setjmp_longjmp)
+  if (fe_sjlj)
     {
       tree *gnu_else_ptr = 0;
       tree gnu_handler;
@@ -5103,7 +5103,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
 					     gnu_jmpbuf_decl))),
 			   gnu_handler, gnu_inner_block);
     }
-  else if (gcc_zcx)
+  else if (gcc_eh)
     {
       tree gnu_handlers;
       location_t locus;
@@ -5147,11 +5147,11 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
 }
 \f
 /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Exception_Handler,
-   to a GCC tree, which is returned.  This is the variant for Setjmp_Longjmp
+   to a GCC tree, which is returned.  This is the variant for front-end sjlj
    exception handling.  */
 
 static tree
-Exception_Handler_to_gnu_sjlj (Node_Id gnat_node)
+Exception_Handler_to_gnu_fe_sjlj (Node_Id gnat_node)
 {
   /* Unless this is "Others" or the special "Non-Ada" exception for Ada, make
      an "if" statement to select the proper exceptions.  For "Others", exclude
@@ -5216,10 +5216,11 @@ Exception_Handler_to_gnu_sjlj (Node_Id gnat_node)
 }
 \f
 /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Exception_Handler,
-   to a GCC tree, which is returned.  This is the variant for ZCX.  */
+   to a GCC tree, which is returned.  This is the variant for GCC exception
+   schemes.  */
 
 static tree
-Exception_Handler_to_gnu_zcx (Node_Id gnat_node)
+Exception_Handler_to_gnu_gcc (Node_Id gnat_node)
 {
   tree gnu_etypes_list = NULL_TREE;
   tree gnu_current_exc_ptr, prev_gnu_incoming_exc_ptr;
@@ -7294,10 +7295,10 @@ gnat_to_gnu (Node_Id gnat_node)
 
     case N_Handled_Sequence_Of_Statements:
       /* If there is an At_End procedure attached to this node, and the EH
-	 mechanism is SJLJ, we must have at least a corresponding At_End
+	 mechanism is front-end, we must have at least a corresponding At_End
 	 handler, unless the No_Exception_Handlers restriction is set.  */
       gcc_assert (type_annotate_only
-		  || Exception_Mechanism != Setjmp_Longjmp
+		  || !Front_End_Exceptions ()
 		  || No (At_End_Proc (gnat_node))
 		  || Present (Exception_Handlers (gnat_node))
 		  || No_Exception_Handlers_Set ());
@@ -7306,10 +7307,10 @@ gnat_to_gnu (Node_Id gnat_node)
       break;
 
     case N_Exception_Handler:
-      if (Exception_Mechanism == Setjmp_Longjmp)
-	gnu_result = Exception_Handler_to_gnu_sjlj (gnat_node);
-      else if (Exception_Mechanism == Back_End_Exceptions)
-	gnu_result = Exception_Handler_to_gnu_zcx (gnat_node);
+      if (Exception_Mechanism == Front_End_SJLJ)
+	gnu_result = Exception_Handler_to_gnu_fe_sjlj (gnat_node);
+      else if (Back_End_Exceptions ())
+	gnu_result = Exception_Handler_to_gnu_gcc (gnat_node);
       else
 	gcc_unreachable ();
       break;
@@ -7317,7 +7318,7 @@ gnat_to_gnu (Node_Id gnat_node)
     case N_Raise_Statement:
       /* Only for reraise in back-end exceptions mode.  */
       gcc_assert (No (Name (gnat_node))
-		  && Exception_Mechanism == Back_End_Exceptions);
+                  && Back_End_Exceptions ());
 
       start_stmt_group ();
       gnat_pushlevel ();

[-- Attachment #3: Type: text/plain, Size: 2 bytes --]




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Ada] Introduce a Frontend_Exceptions flag in system.ads
  2015-11-23 11:06 [Ada] Introduce a Frontend_Exceptions flag in system.ads Olivier Hainque
@ 2015-11-23 11:31 ` Olivier Hainque
  0 siblings, 0 replies; 2+ messages in thread
From: Olivier Hainque @ 2015-11-23 11:31 UTC (permalink / raw)
  To: GCC Patches; +Cc: Olivier Hainque

[-- Attachment #1: Type: text/plain, Size: 201 bytes --]


> On Nov 23, 2015, at 12:02 , Olivier Hainque <hainque@adacore.com> wrote:
> Then all the system.ads files will be updated with a correct value of the
> Frontend_Exceptions flags.

Here's the patch.


[-- Attachment #2: eh-flags-rts.diff --]
[-- Type: application/octet-stream, Size: 48840 bytes --]

commit ece28a4bfa45f9db39b2562c1c2ba8cc92cc5179
Author: Olivier Hainque <hainque@adacore.com>
Date:   Wed Nov 18 18:23:45 2015 +0100

    [Ada] Add Frontend_Exceptions flag to all system.ads files

diff --git a/gcc/ada/system-aix.ads b/gcc/ada/system-aix.ads
index 4a14f64..58a394b 100644
--- a/gcc/ada/system-aix.ads
+++ b/gcc/ada/system-aix.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                            (AIX/PPC Version)                             --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -151,6 +151,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-aix64.ads b/gcc/ada/system-aix64.ads
index fd881bc..4a34583 100644
--- a/gcc/ada/system-aix64.ads
+++ b/gcc/ada/system-aix64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                           (PPC/AIX64 Version)                            --
 --                                                                          --
---          Copyright (C) 2009-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 2009-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -151,6 +151,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-darwin-ppc.ads b/gcc/ada/system-darwin-ppc.ads
index c4fbbd8..e7efdc4 100644
--- a/gcc/ada/system-darwin-ppc.ads
+++ b/gcc/ada/system-darwin-ppc.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (Darwin/PPC Version)                            --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -167,6 +167,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-darwin-ppc64.ads b/gcc/ada/system-darwin-ppc64.ads
index 573f3fc..ae36136 100644
--- a/gcc/ada/system-darwin-ppc64.ads
+++ b/gcc/ada/system-darwin-ppc64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (Darwin/PPC64 Version)                           --
 --                                                                          --
---             Copyright (C) 2011-2012, Free Software Foundation, Inc.      --
+--             Copyright (C) 2011-2015, Free Software Foundation, Inc.      --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -144,6 +144,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-darwin-x86.ads b/gcc/ada/system-darwin-x86.ads
index cc27c56..358793f 100644
--- a/gcc/ada/system-darwin-x86.ads
+++ b/gcc/ada/system-darwin-x86.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (Darwin/x86 Version)                            --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -168,6 +168,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-darwin-x86_64.ads b/gcc/ada/system-darwin-x86_64.ads
index 054271f..c15efa3 100644
--- a/gcc/ada/system-darwin-x86_64.ads
+++ b/gcc/ada/system-darwin-x86_64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (Darwin/x86_64 Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -168,6 +168,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-dragonfly-x86_64.ads b/gcc/ada/system-dragonfly-x86_64.ads
index 1a18d40..2648b20 100644
--- a/gcc/ada/system-dragonfly-x86_64.ads
+++ b/gcc/ada/system-dragonfly-x86_64.ads
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-freebsd-x86.ads b/gcc/ada/system-freebsd-x86.ads
index 95f1daa..a0c5ad4 100644
--- a/gcc/ada/system-freebsd-x86.ads
+++ b/gcc/ada/system-freebsd-x86.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (FreeBSD/x86 Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-freebsd-x86_64.ads b/gcc/ada/system-freebsd-x86_64.ads
index 99c5363..2d1e20d 100644
--- a/gcc/ada/system-freebsd-x86_64.ads
+++ b/gcc/ada/system-freebsd-x86_64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (FreeBSD/x86_64 Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-hpux-ia64.ads b/gcc/ada/system-hpux-ia64.ads
index 2fb0f78..5509552 100644
--- a/gcc/ada/system-hpux-ia64.ads
+++ b/gcc/ada/system-hpux-ia64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                           (HP-UX/ia64 Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-hpux.ads b/gcc/ada/system-hpux.ads
index bc3052b..a636e91 100644
--- a/gcc/ada/system-hpux.ads
+++ b/gcc/ada/system-hpux.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                             (HP-UX Version)                              --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
    --------------------------
diff --git a/gcc/ada/system-linux-alpha.ads b/gcc/ada/system-linux-alpha.ads
index c364496..1875b9a 100644
--- a/gcc/ada/system-linux-alpha.ads
+++ b/gcc/ada/system-linux-alpha.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (GNU-Linux/alpha Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-armeb.ads b/gcc/ada/system-linux-armeb.ads
index bcc31f3..355108f 100644
--- a/gcc/ada/system-linux-armeb.ads
+++ b/gcc/ada/system-linux-armeb.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (GNU-Linux/ARMEB Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -147,6 +147,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
 end System;
diff --git a/gcc/ada/system-linux-armel.ads b/gcc/ada/system-linux-armel.ads
index 768fdd4..90afbfe 100644
--- a/gcc/ada/system-linux-armel.ads
+++ b/gcc/ada/system-linux-armel.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (GNU-Linux/ARMEL Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -149,6 +149,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-hppa.ads b/gcc/ada/system-linux-hppa.ads
index 4d3b2af..0d76aef 100644
--- a/gcc/ada/system-linux-hppa.ads
+++ b/gcc/ada/system-linux-hppa.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (GNU/Linux-HPPA Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-ia64.ads b/gcc/ada/system-linux-ia64.ads
index c1a8ca1..1ddc311 100644
--- a/gcc/ada/system-linux-ia64.ads
+++ b/gcc/ada/system-linux-ia64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (GNU-Linux/ia64 Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -150,6 +150,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-mips.ads b/gcc/ada/system-linux-mips.ads
index 0872465..3893cd9 100644
--- a/gcc/ada/system-linux-mips.ads
+++ b/gcc/ada/system-linux-mips.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (GNU-Linux/MIPS Version)                        --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -139,6 +139,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-mips64el.ads b/gcc/ada/system-linux-mips64el.ads
index 5c8cad1..76db848 100644
--- a/gcc/ada/system-linux-mips64el.ads
+++ b/gcc/ada/system-linux-mips64el.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                       (GNU-Linux/MIPS64EL Version)                       --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -139,6 +139,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-mipsel.ads b/gcc/ada/system-linux-mipsel.ads
index e6d56fb..f4dc9bc 100644
--- a/gcc/ada/system-linux-mipsel.ads
+++ b/gcc/ada/system-linux-mipsel.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (GNU-Linux/MIPSEL Version)                        --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -139,6 +139,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-ppc.ads b/gcc/ada/system-linux-ppc.ads
index 927bd85..f0a2b1e 100644
--- a/gcc/ada/system-linux-ppc.ads
+++ b/gcc/ada/system-linux-ppc.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (GNU-Linux/PPC Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -149,6 +149,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-ppc64.ads b/gcc/ada/system-linux-ppc64.ads
index 52d5d44..c690531 100644
--- a/gcc/ada/system-linux-ppc64.ads
+++ b/gcc/ada/system-linux-ppc64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (GNU-Linux/PPC64 Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -147,6 +147,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-s390.ads b/gcc/ada/system-linux-s390.ads
index 1765a22..6c59f64 100644
--- a/gcc/ada/system-linux-s390.ads
+++ b/gcc/ada/system-linux-s390.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (GNU-Linux/s390 Version)                        --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-s390x.ads b/gcc/ada/system-linux-s390x.ads
index 0e41be3..90e1d1c 100644
--- a/gcc/ada/system-linux-s390x.ads
+++ b/gcc/ada/system-linux-s390x.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (GNU-Linux/s390x Version)                       --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-sh4.ads b/gcc/ada/system-linux-sh4.ads
index d3590a1..ad8517f 100644
--- a/gcc/ada/system-linux-sh4.ads
+++ b/gcc/ada/system-linux-sh4.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (GNU-Linux/sh4 Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -149,6 +149,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-sparc.ads b/gcc/ada/system-linux-sparc.ads
index 1ad20e2..3fa0a2d 100644
--- a/gcc/ada/system-linux-sparc.ads
+++ b/gcc/ada/system-linux-sparc.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (GNU/Linux-SPARC Version)                       --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-sparcv9.ads b/gcc/ada/system-linux-sparcv9.ads
index 5b7598f..406fa04 100644
--- a/gcc/ada/system-linux-sparcv9.ads
+++ b/gcc/ada/system-linux-sparcv9.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (GNU/Linux-SPARCV9 Version)                      --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -139,6 +139,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-x86.ads b/gcc/ada/system-linux-x86.ads
index 8bcc2ea..1942124 100644
--- a/gcc/ada/system-linux-x86.ads
+++ b/gcc/ada/system-linux-x86.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (GNU-Linux/x86 Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -150,6 +150,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-linux-x86_64.ads b/gcc/ada/system-linux-x86_64.ads
index 3103cf7..fa62b94 100644
--- a/gcc/ada/system-linux-x86_64.ads
+++ b/gcc/ada/system-linux-x86_64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                       (GNU-Linux/x86-64 Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -150,6 +150,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-mingw-x86_64.ads b/gcc/ada/system-mingw-x86_64.ads
index 865bcd6..9dff0e2 100644
--- a/gcc/ada/system-mingw-x86_64.ads
+++ b/gcc/ada/system-mingw-x86_64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                            (Windows Version)                             --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
    ---------------------------
diff --git a/gcc/ada/system-mingw.ads b/gcc/ada/system-mingw.ads
index 84e4332..e70381a 100644
--- a/gcc/ada/system-mingw.ads
+++ b/gcc/ada/system-mingw.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                            (Windows Version)                             --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
    ---------------------------
diff --git a/gcc/ada/system-rtems.ads b/gcc/ada/system-rtems.ads
index 50bf7ac..e4daf6b 100644
--- a/gcc/ada/system-rtems.ads
+++ b/gcc/ada/system-rtems.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                            (Compiler Version)                            --
 --                                                                          --
---          Copyright (C) 1992-2014 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2015 Free Software Foundation, Inc.          --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -158,6 +158,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
 end System;
diff --git a/gcc/ada/system-solaris-sparc.ads b/gcc/ada/system-solaris-sparc.ads
index 768f4ca..9073ebc 100644
--- a/gcc/ada/system-solaris-sparc.ads
+++ b/gcc/ada/system-solaris-sparc.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (SUN Solaris Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -141,6 +141,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-solaris-sparcv9.ads b/gcc/ada/system-solaris-sparcv9.ads
index 5cfea64..1673979 100644
--- a/gcc/ada/system-solaris-sparcv9.ads
+++ b/gcc/ada/system-solaris-sparcv9.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (Solaris Sparcv9 Version)                         --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-solaris-x86.ads b/gcc/ada/system-solaris-x86.ads
index 0235bea..b2d5fdf 100644
--- a/gcc/ada/system-solaris-x86.ads
+++ b/gcc/ada/system-solaris-x86.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (x86 Solaris Version)                           --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-solaris-x86_64.ads b/gcc/ada/system-solaris-x86_64.ads
index 94afe00..33b2935 100644
--- a/gcc/ada/system-solaris-x86_64.ads
+++ b/gcc/ada/system-solaris-x86_64.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                        (x86-64 Solaris Version)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -142,6 +142,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-vxworks-arm.ads b/gcc/ada/system-vxworks-arm.ads
index c29485f..c3b429f 100644
--- a/gcc/ada/system-vxworks-arm.ads
+++ b/gcc/ada/system-vxworks-arm.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (VxWorks Version ARM)                           --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -158,6 +158,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := True;
+   Frontend_Exceptions       : constant Boolean := False;
    ZCX_By_Default            : constant Boolean := True;
 
 end System;
diff --git a/gcc/ada/system-vxworks-m68k.ads b/gcc/ada/system-vxworks-m68k.ads
index 8b9a661..d8fa9ba 100644
--- a/gcc/ada/system-vxworks-m68k.ads
+++ b/gcc/ada/system-vxworks-m68k.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                          (VxWorks version M68K)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -154,6 +154,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := True;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
 end System;
diff --git a/gcc/ada/system-vxworks-mips.ads b/gcc/ada/system-vxworks-mips.ads
index 57dd4e7..2284ebb 100644
--- a/gcc/ada/system-vxworks-mips.ads
+++ b/gcc/ada/system-vxworks-mips.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (VxWorks Version Mips)                           --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -154,6 +154,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := True;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
 end System;
diff --git a/gcc/ada/system-vxworks-ppc.ads b/gcc/ada/system-vxworks-ppc.ads
index 33e1e7e..f942470 100644
--- a/gcc/ada/system-vxworks-ppc.ads
+++ b/gcc/ada/system-vxworks-ppc.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (VxWorks 5 Version PPC)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -161,6 +161,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := True;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
 end System;
diff --git a/gcc/ada/system-vxworks-sparcv9.ads b/gcc/ada/system-vxworks-sparcv9.ads
index e81dafd..5c07b05 100644
--- a/gcc/ada/system-vxworks-sparcv9.ads
+++ b/gcc/ada/system-vxworks-sparcv9.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                       (VxWorks Version Sparc/64)                         --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -156,6 +156,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := True;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
 end System;
diff --git a/gcc/ada/system-vxworks-x86.ads b/gcc/ada/system-vxworks-x86.ads
index 3b8a9c5..adc73a6 100644
--- a/gcc/ada/system-vxworks-x86.ads
+++ b/gcc/ada/system-vxworks-x86.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                         (VxWorks 5 Version x86)                          --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -158,6 +158,7 @@ private
    Always_Compatible_Rep     : constant Boolean := False;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := True;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
 end System;
diff --git a/gcc/ada/system.ads b/gcc/ada/system.ads
index 6dfb955..bab3bd7 100644
--- a/gcc/ada/system.ads
+++ b/gcc/ada/system.ads
@@ -7,7 +7,7 @@
 --                                 S p e c                                  --
 --                            (Compiler Version)                            --
 --                                                                          --
---          Copyright (C) 1992-2014, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2015, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -163,6 +163,7 @@ private
    Always_Compatible_Rep     : constant Boolean := True;
    Suppress_Standard_Library : constant Boolean := False;
    Use_Ada_Main_Program_Name : constant Boolean := False;
+   Frontend_Exceptions       : constant Boolean := True;
    ZCX_By_Default            : constant Boolean := False;
 
    --  Obsolete entries, to be removed eventually (bootstrap issues)

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-11-23 11:27 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-23 11:06 [Ada] Introduce a Frontend_Exceptions flag in system.ads Olivier Hainque
2015-11-23 11:31 ` Olivier Hainque

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).