From ce19ac123abde3d9c52d52e13a00bbbe60e08722 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Sun, 6 Feb 2022 16:06:36 +0000 Subject: [PATCH] [Ada] Remove front-end SJLJ processing We no longer use the so called front-end SJLJ exception mechanism, so get rid of it. gcc/ada/ * ali.adb, ali.ads, bcheck.adb, exp_ch11.adb, fe.h, gnat1drv.adb, opt.adb, opt.ads, targparm.adb, targparm.ads, lib-writ.adb: Get rid of Frontend_Exceptions processing. * libgnat/system-aix.ads, libgnat/system-darwin-arm.ads, libgnat/system-darwin-ppc.ads, libgnat/system-darwin-x86.ads, libgnat/system-djgpp.ads, libgnat/system-dragonfly-x86_64.ads, libgnat/system-freebsd.ads, libgnat/system-hpux-ia64.ads, libgnat/system-hpux.ads, libgnat/system-linux-alpha.ads, libgnat/system-linux-arm.ads, libgnat/system-linux-hppa.ads, libgnat/system-linux-ia64.ads, libgnat/system-linux-m68k.ads, libgnat/system-linux-mips.ads, libgnat/system-linux-ppc.ads, libgnat/system-linux-riscv.ads, libgnat/system-linux-s390.ads, libgnat/system-linux-sh4.ads, libgnat/system-linux-sparc.ads, libgnat/system-linux-x86.ads, libgnat/system-lynxos178-ppc.ads, libgnat/system-lynxos178-x86.ads, libgnat/system-mingw.ads, libgnat/system-qnx-aarch64.ads, libgnat/system-rtems.ads, libgnat/system-solaris-sparc.ads, libgnat/system-solaris-x86.ads, libgnat/system-vxworks-arm-rtp-smp.ads, libgnat/system-vxworks-arm-rtp.ads, libgnat/system-vxworks-arm.ads, libgnat/system-vxworks-e500-kernel.ads, libgnat/system-vxworks-e500-rtp-smp.ads, libgnat/system-vxworks-e500-rtp.ads, libgnat/system-vxworks-ppc-kernel.ads, libgnat/system-vxworks-ppc-rtp-smp.ads, libgnat/system-vxworks-ppc-rtp.ads, libgnat/system-vxworks-x86-kernel.ads, libgnat/system-vxworks-x86-rtp-smp.ads, libgnat/system-vxworks-x86-rtp.ads, libgnat/system-vxworks7-aarch64-rtp-smp.ads, libgnat/system-vxworks7-aarch64.ads, libgnat/system-vxworks7-arm-rtp-smp.ads, libgnat/system-vxworks7-arm.ads, libgnat/system-vxworks7-e500-kernel.ads, libgnat/system-vxworks7-e500-rtp-smp.ads, libgnat/system-vxworks7-e500-rtp.ads, libgnat/system-vxworks7-ppc-kernel.ads, libgnat/system-vxworks7-ppc-rtp-smp.ads, libgnat/system-vxworks7-ppc-rtp.ads, libgnat/system-vxworks7-ppc64-kernel.ads, libgnat/system-vxworks7-ppc64-rtp-smp.ads, libgnat/system-vxworks7-x86-kernel.ads, libgnat/system-vxworks7-x86-rtp-smp.ads, libgnat/system-vxworks7-x86-rtp.ads, libgnat/system-vxworks7-x86_64-kernel.ads, libgnat/system-vxworks7-x86_64-rtp-smp.ads: Remove Frontend_Exceptions line. * gcc-interface/decl.cc, gcc-interface/trans.cc (gnat_to_gnu_entity, gnat_to_gnu_subprog_type, gigi, gnat_to_gnu): Remove Front_End_SJLJ processing and always assume Back_End_Exceptions. --- gcc/ada/ali.adb | 7 +- gcc/ada/ali.ads | 8 - gcc/ada/bcheck.adb | 11 +- gcc/ada/exp_ch11.adb | 122 +---------- gcc/ada/fe.h | 6 +- gcc/ada/gcc-interface/decl.cc | 28 +-- gcc/ada/gcc-interface/trans.cc | 234 ++------------------- gcc/ada/gnat1drv.adb | 27 +-- gcc/ada/lib-writ.adb | 4 - gcc/ada/libgnat/system-aix.ads | 1 - gcc/ada/libgnat/system-darwin-arm.ads | 1 - gcc/ada/libgnat/system-darwin-ppc.ads | 1 - gcc/ada/libgnat/system-darwin-x86.ads | 1 - gcc/ada/libgnat/system-djgpp.ads | 1 - gcc/ada/libgnat/system-dragonfly-x86_64.ads | 1 - gcc/ada/libgnat/system-freebsd.ads | 1 - gcc/ada/libgnat/system-hpux-ia64.ads | 1 - gcc/ada/libgnat/system-hpux.ads | 1 - gcc/ada/libgnat/system-linux-alpha.ads | 1 - gcc/ada/libgnat/system-linux-arm.ads | 1 - gcc/ada/libgnat/system-linux-hppa.ads | 1 - gcc/ada/libgnat/system-linux-ia64.ads | 1 - gcc/ada/libgnat/system-linux-m68k.ads | 1 - gcc/ada/libgnat/system-linux-mips.ads | 1 - gcc/ada/libgnat/system-linux-ppc.ads | 1 - gcc/ada/libgnat/system-linux-riscv.ads | 1 - gcc/ada/libgnat/system-linux-s390.ads | 1 - gcc/ada/libgnat/system-linux-sh4.ads | 1 - gcc/ada/libgnat/system-linux-sparc.ads | 1 - gcc/ada/libgnat/system-linux-x86.ads | 1 - gcc/ada/libgnat/system-lynxos178-ppc.ads | 1 - gcc/ada/libgnat/system-lynxos178-x86.ads | 1 - gcc/ada/libgnat/system-mingw.ads | 1 - gcc/ada/libgnat/system-qnx-aarch64.ads | 1 - gcc/ada/libgnat/system-rtems.ads | 1 - gcc/ada/libgnat/system-solaris-sparc.ads | 1 - gcc/ada/libgnat/system-solaris-x86.ads | 1 - gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks-arm-rtp.ads | 1 - gcc/ada/libgnat/system-vxworks-arm.ads | 1 - gcc/ada/libgnat/system-vxworks-e500-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks-e500-rtp.ads | 1 - gcc/ada/libgnat/system-vxworks-ppc-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks-ppc-rtp.ads | 1 - gcc/ada/libgnat/system-vxworks-x86-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks-x86-rtp.ads | 1 - .../libgnat/system-vxworks7-aarch64-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks7-aarch64.ads | 1 - gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks7-arm.ads | 1 - gcc/ada/libgnat/system-vxworks7-e500-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks7-e500-rtp.ads | 1 - gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads | 1 - gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks7-x86-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads | 1 - gcc/ada/libgnat/system-vxworks7-x86-rtp.ads | 1 - gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads | 1 - gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads | 1 - gcc/ada/opt.adb | 26 +-- gcc/ada/opt.ads | 15 +- gcc/ada/targparm.adb | 4 - gcc/ada/targparm.ads | 3 - 70 files changed, 40 insertions(+), 512 deletions(-) diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb index 984e9ca..90fcfad 100644 --- a/gcc/ada/ali.adb +++ b/gcc/ada/ali.adb @@ -670,7 +670,6 @@ package body ALI is SSO_Default_Specified := False; Task_Dispatching_Policy_Specified := ' '; Unreserve_All_Interrupts_Specified := False; - Frontend_Exceptions_Specified := False; Zero_Cost_Exceptions_Specified := False; end Initialize_ALI; @@ -1774,7 +1773,6 @@ 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 @@ -1971,9 +1969,10 @@ package body ALI is elsif C = 'F' then C := Getc; + -- Old front-end exceptions marker, ignore + if C = 'X' then - ALIs.Table (Id).Frontend_Exceptions := True; - Frontend_Exceptions_Specified := True; + null; else Fatal_Error_Ignore; end if; diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads index 8d6dd90..7419c57 100644 --- a/gcc/ada/ali.ads +++ b/gcc/ada/ali.ads @@ -247,10 +247,6 @@ 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. @@ -559,10 +555,6 @@ 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 f773778..edab985 100644 --- a/gcc/ada/bcheck.adb +++ b/gcc/ada/bcheck.adb @@ -94,9 +94,7 @@ package body Bcheck is Check_Consistent_SSO_Default; end if; - if Zero_Cost_Exceptions_Specified - or else Frontend_Exceptions_Specified - then + if Zero_Cost_Exceptions_Specified then Check_Consistent_Exception_Handling; end if; @@ -1245,11 +1243,8 @@ package body Bcheck 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) - or else - (ALIs.Table (A1).Frontend_Exceptions /= - ALIs.Table (ALIs.First).Frontend_Exceptions) + if ALIs.Table (A1).Zero_Cost_Exceptions /= + ALIs.Table (ALIs.First).Zero_Cost_Exceptions then Error_Msg_File_1 := ALIs.Table (A1).Sfile; Error_Msg_File_2 := ALIs.Table (ALIs.First).Sfile; diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb index 00b7745..1867469 100644 --- a/gcc/ada/exp_ch11.adb +++ b/gcc/ada/exp_ch11.adb @@ -41,7 +41,6 @@ with Restrict; use Restrict; with Rident; use Rident; with Rtsfind; use Rtsfind; with Sem; use Sem; -with Sem_Ch8; use Sem_Ch8; with Sem_Res; use Sem_Res; with Sem_Util; use Sem_Util; with Sinfo; use Sinfo; @@ -76,113 +75,18 @@ package body Exp_Ch11 is --------------------------- -- For a handled statement sequence that has a cleanup (At_End_Proc - -- field set), an exception handler of the following form is required: + -- field set), perform any needed expansion. - -- exception - -- when all others => - -- cleanup call - -- raise; - - -- Note: this exception handler is treated rather specially by - -- subsequent expansion in two respects: - - -- The normal call to Undefer_Abort is omitted - -- The raise call does not do Defer_Abort - - -- This is because the current tasking code seems to assume that - -- the call to the cleanup routine that is made from an exception - -- handler for the abort signal is called with aborts deferred. - - -- This expansion is only done if we have front end exception handling. - -- If we have back end exception handling, then the AT END handler is - -- left alone, and cleanups (including the exceptional case) are handled - -- by the back end. - - -- In the front end case, the exception handler described above handles - -- the exceptional case. The AT END handler is left in the generated tree - -- and the code generator (e.g. gigi) must still handle proper generation - -- of cleanup calls for the non-exceptional case. + -- Do nothing by default. We used to perform a special expansion for + -- front-end SJLJ, and we may want to customize this processing in + -- the future for new back-ends. procedure Expand_At_End_Handler (HSS : Node_Id; Blk_Id : Entity_Id) is - Clean : constant Entity_Id := Entity (At_End_Proc (HSS)); - Ohandle : Node_Id; - Stmnts : List_Id; - - Loc : constant Source_Ptr := No_Location; - -- Location used for expansion. We quite deliberately do not set a - -- specific source location for the expanded handler. This makes - -- sense since really the handler is not associated with specific - -- source. We used to set this to Sloc (Clean), but that caused - -- useless and annoying bouncing around of line numbers in the - -- debugger in some circumstances. - + pragma Unreferenced (Blk_Id); begin - pragma Assert (Present (Clean)); + pragma Assert (Present (Entity (At_End_Proc (HSS)))); pragma Assert (No (Exception_Handlers (HSS))); - - -- Back end exception schemes don't need explicit handlers to - -- trigger AT-END actions on exceptional paths. - - if Back_End_Exceptions then - return; - end if; - - -- Don't expand an At End handler if we have already had configurable - -- run-time violations, since likely this will just be a matter of - -- generating useless cascaded messages - - if Configurable_Run_Time_Violations > 0 then - return; - end if; - - -- Don't expand an At End handler if we are not allowing exceptions - -- or if exceptions are transformed into local gotos, and never - -- propagated (No_Exception_Propagation). - - if No_Exception_Handlers_Set then - return; - end if; - - if Present (Blk_Id) then - Push_Scope (Blk_Id); - end if; - - Ohandle := - Make_Others_Choice (Loc); - Set_All_Others (Ohandle); - - Stmnts := New_List ( - Make_Procedure_Call_Statement (Loc, - Name => New_Occurrence_Of (Clean, Loc))); - - -- Generate reraise statement as last statement of AT-END handler, - -- unless we are under control of No_Exception_Propagation, in which - -- case no exception propagation is possible anyway, so we do not need - -- a reraise (the AT END handler in this case is only for normal exits - -- not for exceptional exits). Also, we flag the Reraise statement as - -- being part of an AT END handler to prevent signalling this reraise - -- as a violation of the restriction when it is not set. - - if not Restriction_Active (No_Exception_Propagation) then - declare - Rstm : constant Node_Id := Make_Raise_Statement (Loc); - begin - Set_From_At_End (Rstm); - Append_To (Stmnts, Rstm); - end; - end if; - - Set_Exception_Handlers (HSS, New_List ( - Make_Implicit_Exception_Handler (Loc, - Exception_Choices => New_List (Ohandle), - Statements => Stmnts))); - - Analyze_List (Stmnts, Suppress => All_Checks); - Expand_Exception_Handlers (HSS); - - if Present (Blk_Id) then - Pop_Scope; - end if; + return; end Expand_At_End_Handler; ------------------------------- @@ -987,13 +891,11 @@ package body Exp_Ch11 is -- ... -- end; - -- This expansion is only performed when using front-end - -- exceptions. Gigi will insert a call to initialize the - -- choice parameter. + -- This expansion is only performed when using CodePeer. + -- Gigi will insert a call to initialize the choice parameter. if Present (Choice_Parameter (Handler)) - and then (Front_End_Exceptions - or else CodePeer_Mode) + and then CodePeer_Mode then declare Cparm : constant Entity_Id := Choice_Parameter (Handler); @@ -1717,9 +1619,7 @@ package body Exp_Ch11 is -- GNATprove all code with exceptions falls outside the subset of -- code which can be formally analyzed. - if not CodePeer_Mode - and then Back_End_Exceptions - then + if not CodePeer_Mode then return; end if; diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h index 4bdc023..dc3a1af 100644 --- a/gcc/ada/fe.h +++ b/gcc/ada/fe.h @@ -219,7 +219,7 @@ typedef enum { } Ada_Version_Type; typedef enum { - Front_End_SJLJ, Back_End_ZCX, Back_End_SJLJ + Back_End_ZCX, Back_End_SJLJ } Exception_Mechanism_Type; extern Ada_Version_Type Ada_Version; @@ -238,13 +238,9 @@ extern Boolean Suppress_Checks; #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: */ diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index d52c4fb..56ad499 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -1597,14 +1597,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) if (TREE_CODE (gnu_decl) == CONST_DECL) DECL_CONST_ADDRESS_P (gnu_decl) = constructor_address_p (gnu_expr); - /* If this object is declared in a block that contains a block with an - 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 (Front_End_Exceptions () - && Has_Nested_Block_With_Handler (Scope (gnat_entity))) - TREE_ADDRESSABLE (gnu_decl) = 1; - /* If this is a local variable with non-BLKmode and aggregate type, and optimization isn't enabled, then force it in memory so that a register won't be allocated to it with possible subparts left @@ -1618,24 +1610,6 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, bool definition) && !optimize) TREE_ADDRESSABLE (gnu_decl) = 1; - /* 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 - front-end setjmp/longjmp exception mechanism, update the setjmp - buffer. */ - if (definition - && Exception_Mechanism == Front_End_SJLJ - && get_block_jmpbuf_decl () - && DECL_SIZE_UNIT (gnu_decl) - && (TREE_CODE (DECL_SIZE_UNIT (gnu_decl)) != INTEGER_CST - || (flag_stack_check == GENERIC_STACK_CHECK - && compare_tree_int (DECL_SIZE_UNIT (gnu_decl), - STACK_CHECK_MAX_VAR_SIZE) > 0))) - add_stmt_with_node (build_call_n_expr - (update_setjmp_buf_decl, 1, - build_unary_op (ADDR_EXPR, NULL_TREE, - get_block_jmpbuf_decl ())), - gnat_entity); - /* Back-annotate Esize and Alignment of the object if not already known. Note that we pick the values of the type, not those of the object, to shield ourselves from low-level platform-dependent @@ -5801,7 +5775,7 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition, circuitry from it, we need to declare that calls to pure Ada subprograms that can throw have side effects, since they can trigger an "abnormal" transfer of control; therefore they cannot be "pure" in the GCC sense. */ - bool pure_flag = Is_Pure (gnat_subprog) && Back_End_Exceptions (); + bool pure_flag = Is_Pure (gnat_subprog); bool return_by_direct_ref_p = false; bool return_by_invisi_ref_p = false; bool return_unconstrained_p = false; diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc index 39059cb..5741986 100644 --- a/gcc/ada/gcc-interface/trans.cc +++ b/gcc/ada/gcc-interface/trans.cc @@ -666,9 +666,7 @@ gigi (Node_Id gnat_root, main_identifier_node = get_identifier ("main"); - /* If we are using the GCC exception mechanism, let GCC know. */ - if (Back_End_Exceptions ()) - gnat_init_gcc_eh (); + gnat_init_gcc_eh (); /* Initialize the GCC support for FP operations. */ gnat_init_gcc_fp (); @@ -5361,26 +5359,16 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node) { /* If just annotating, ignore all EH and cleanups. */ const bool gcc_eh - = (!type_annotate_only - && Present (Exception_Handlers (gnat_node)) - && Back_End_Exceptions ()); - const bool fe_sjlj_eh - = (!type_annotate_only - && Present (Exception_Handlers (gnat_node)) - && Exception_Mechanism == Front_End_SJLJ); + = !type_annotate_only && Present (Exception_Handlers (gnat_node)); const bool at_end = !type_annotate_only && Present (At_End_Proc (gnat_node)); - const bool binding_for_block = (at_end || gcc_eh || fe_sjlj_eh); - tree gnu_jmpsave_decl = NULL_TREE; - tree gnu_jmpbuf_decl = NULL_TREE; + const bool binding_for_block = (at_end || gcc_eh); tree gnu_inner_block; /* The statement(s) for the block itself. */ tree gnu_result; - tree gnu_expr; Node_Id gnat_temp; - /* The GCC exception handling mechanism can handle both ZCX and SJLJ schemes - and the front-end has its own SJLJ mechanism. To call the GCC mechanism, - we call add_cleanup, and when we leave the binding, end_stmt_group will - create the TRY_FINALLY_EXPR construct. + /* The GCC exception handling mechanism can handle both ZCX and SJLJ schemes. + To call the GCC mechanism, we call add_cleanup, and when we leave the + binding, end_stmt_group will create the TRY_FINALLY_EXPR construct. ??? The region level calls down there have been specifically put in place for a ZCX context and currently the order in which things are emitted @@ -5390,45 +5378,13 @@ 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 front-end SJLJ) and binding level. */ + outer statement group and binding level. */ if (binding_for_block) { start_stmt_group (); gnat_pushlevel (); } - /* If using fe_sjlj_eh, 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 (fe_sjlj_eh) - { - gnu_jmpsave_decl - = create_var_decl (get_identifier ("JMPBUF_SAVE"), NULL_TREE, - jmpbuf_ptr_type, - build_call_n_expr (get_jmpbuf_decl, 0), - false, false, false, false, false, true, false, - NULL, gnat_node); - - /* The __builtin_setjmp receivers will immediately reinstall it. Now - because of the unstructured form of EH used by fe_sjlj_eh, there - might be forward edges going to __builtin_setjmp receivers on which - it is uninitialized, although they will never be actually taken. */ - suppress_warning (gnu_jmpsave_decl, OPT_Wuninitialized); - gnu_jmpbuf_decl - = create_var_decl (get_identifier ("JMP_BUF"), NULL_TREE, - jmpbuf_type, - NULL_TREE, - false, false, false, false, false, true, false, - NULL, gnat_node); - - set_block_jmpbuf_decl (gnu_jmpbuf_decl); - - /* When we exit this block, restore the saved value. */ - add_cleanup (build_call_n_expr (set_jmpbuf_decl, 1, gnu_jmpsave_decl), - Present (End_Label (gnat_node)) - ? End_Label (gnat_node) : gnat_node); - } - /* If we are to call a function when exiting this block, add a cleanup to the binding level we made above. Note that add_cleanup is FIFO so we must register this cleanup after the EH cleanup just above. */ @@ -5449,19 +5405,10 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node) ? End_Label (gnat_node) : At_End_Proc (gnat_node)); } - /* Now build the tree for the declarations and statements inside this block. - If this is SJLJ, set our jmp_buf as the current buffer. */ + /* Now build the tree for the declarations and statements inside this + block. */ start_stmt_group (); - if (fe_sjlj_eh) - { - gnu_expr = build_call_n_expr (set_jmpbuf_decl, 1, - build_unary_op (ADDR_EXPR, NULL_TREE, - gnu_jmpbuf_decl)); - set_expr_location_from_node (gnu_expr, gnat_node); - add_stmt (gnu_expr); - } - if (Present (First_Real_Statement (gnat_node))) process_decls (Statements (gnat_node), Empty, First_Real_Statement (gnat_node), true, true); @@ -5475,81 +5422,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node) gnu_inner_block = end_stmt_group (); - /* Now generate code for the two exception models, if either is relevant for - this block. */ - if (fe_sjlj_eh) - { - tree *gnu_else_ptr = 0; - tree gnu_handler; - - /* Make a binding level for the exception handling declarations and code - and set up gnu_except_ptr_stack for the handlers to use. */ - start_stmt_group (); - gnat_pushlevel (); - - vec_safe_push (gnu_except_ptr_stack, - create_var_decl (get_identifier ("EXCEPT_PTR"), NULL_TREE, - build_pointer_type (except_type_node), - build_call_n_expr (get_excptr_decl, 0), - false, false, false, false, false, - true, false, NULL, gnat_node)); - - /* Generate code for each handler. The N_Exception_Handler case does the - real work and returns a COND_EXPR for each handler, which we chain - together here. */ - for (gnat_temp = First_Non_Pragma (Exception_Handlers (gnat_node)); - Present (gnat_temp); gnat_temp = Next_Non_Pragma (gnat_temp)) - { - gnu_expr = gnat_to_gnu (gnat_temp); - - /* If this is the first one, set it as the outer one. Otherwise, - point the "else" part of the previous handler to us. Then point - to our "else" part. */ - if (!gnu_else_ptr) - add_stmt (gnu_expr); - else - *gnu_else_ptr = gnu_expr; - - gnu_else_ptr = &COND_EXPR_ELSE (gnu_expr); - } - - /* If none of the exception handlers did anything, re-raise but do not - defer abortion. */ - gnu_expr = build_call_n_expr (raise_nodefer_decl, 1, - gnu_except_ptr_stack->last ()); - set_expr_location_from_node - (gnu_expr, - Present (End_Label (gnat_node)) ? End_Label (gnat_node) : gnat_node); - - if (gnu_else_ptr) - *gnu_else_ptr = gnu_expr; - else - add_stmt (gnu_expr); - - /* End the binding level dedicated to the exception handlers and get the - whole statement group. */ - gnu_except_ptr_stack->pop (); - gnat_poplevel (); - gnu_handler = end_stmt_group (); - - /* If the setjmp returns 1, we restore our incoming longjmp value and - then check the handlers. */ - start_stmt_group (); - add_stmt_with_node (build_call_n_expr (set_jmpbuf_decl, 1, - gnu_jmpsave_decl), - gnat_node); - add_stmt (gnu_handler); - gnu_handler = end_stmt_group (); - - /* This block is now "if (setjmp) ... else ". */ - gnu_result = build3 (COND_EXPR, void_type_node, - (build_call_n_expr - (setjmp_decl, 1, - build_unary_op (ADDR_EXPR, NULL_TREE, - gnu_jmpbuf_decl))), - gnu_handler, gnu_inner_block); - } - else if (gcc_eh) + if (gcc_eh) { tree gnu_handlers; location_t locus; @@ -5592,75 +5465,6 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node) return gnu_result; } -/* 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 front-end sjlj - exception handling. */ - -static tree -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 - exceptions where Handled_By_Others is nonzero unless the All_Others flag - is set. For "Non-ada", accept an exception if "Lang" is 'V'. */ - tree gnu_choice = boolean_false_node; - tree gnu_body = build_stmt_group (Statements (gnat_node), false); - Node_Id gnat_temp; - - for (gnat_temp = First (Exception_Choices (gnat_node)); - gnat_temp; gnat_temp = Next (gnat_temp)) - { - tree this_choice; - - if (Nkind (gnat_temp) == N_Others_Choice) - { - if (All_Others (gnat_temp)) - this_choice = boolean_true_node; - else - this_choice - = build_binary_op - (EQ_EXPR, boolean_type_node, - convert - (integer_type_node, - build_component_ref - (build_unary_op - (INDIRECT_REF, NULL_TREE, - gnu_except_ptr_stack->last ()), - not_handled_by_others_decl, - false)), - integer_zero_node); - } - - else if (Nkind (gnat_temp) == N_Identifier - || Nkind (gnat_temp) == N_Expanded_Name) - { - Entity_Id gnat_ex_id = Entity (gnat_temp); - tree gnu_expr; - - /* Exception may be a renaming. Recover original exception which is - the one elaborated and registered. */ - if (Present (Renamed_Object (gnat_ex_id))) - gnat_ex_id = Renamed_Object (gnat_ex_id); - - gnu_expr = gnat_to_gnu_entity (gnat_ex_id, NULL_TREE, false); - - this_choice - = build_binary_op - (EQ_EXPR, boolean_type_node, - gnu_except_ptr_stack->last (), - convert (TREE_TYPE (gnu_except_ptr_stack->last ()), - build_unary_op (ADDR_EXPR, NULL_TREE, gnu_expr))); - } - else - gcc_unreachable (); - - gnu_choice = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node, - gnu_choice, this_choice); - } - - return build3 (COND_EXPR, void_type_node, gnu_choice, gnu_body, NULL_TREE); -} - /* Return true if no statement in GNAT_LIST can alter the control flow. */ static bool @@ -7871,30 +7675,16 @@ 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 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 - || !Front_End_Exceptions () - || No (At_End_Proc (gnat_node)) - || Present (Exception_Handlers (gnat_node)) - || No_Exception_Handlers_Set ()); - gnu_result = Handled_Sequence_Of_Statements_to_gnu (gnat_node); break; case N_Exception_Handler: - if (Back_End_Exceptions ()) - gnu_result = Exception_Handler_to_gnu_gcc (gnat_node); - else if (Exception_Mechanism == Front_End_SJLJ) - gnu_result = Exception_Handler_to_gnu_fe_sjlj (gnat_node); - else - gcc_unreachable (); + gnu_result = Exception_Handler_to_gnu_gcc (gnat_node); break; case N_Raise_Statement: /* Only for reraise in back-end exceptions mode. */ - gcc_assert (No (Name (gnat_node)) && Back_End_Exceptions ()); + gcc_assert (No (Name (gnat_node))); start_stmt_group (); diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb index 0a11619..39fa9be 100644 --- a/gcc/ada/gnat1drv.adb +++ b/gcc/ada/gnat1drv.adb @@ -631,28 +631,11 @@ procedure Gnat1drv is -- generating code. if Operating_Mode = Generate_Code then - 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; + if Targparm.ZCX_By_Default_On_Target then + Exception_Mechanism := Back_End_ZCX; + else + Exception_Mechanism := Back_End_SJLJ; + end if; end if; -- Set proper status for overflow check mechanism diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb index 05571f2..59a9170 100644 --- a/gcc/ada/lib-writ.adb +++ b/gcc/ada/lib-writ.adb @@ -1234,10 +1234,6 @@ package body Lib.Writ is Write_Info_Str (" UA"); end if; - 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/libgnat/system-aix.ads b/gcc/ada/libgnat/system-aix.ads index c016361..57756d4 100644 --- a/gcc/ada/libgnat/system-aix.ads +++ b/gcc/ada/libgnat/system-aix.ads @@ -150,7 +150,6 @@ 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/libgnat/system-darwin-arm.ads b/gcc/ada/libgnat/system-darwin-arm.ads index be5d664..7390f3a 100644 --- a/gcc/ada/libgnat/system-darwin-arm.ads +++ b/gcc/ada/libgnat/system-darwin-arm.ads @@ -166,7 +166,6 @@ 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/libgnat/system-darwin-ppc.ads b/gcc/ada/libgnat/system-darwin-ppc.ads index dc3d6c4..984d5a2 100644 --- a/gcc/ada/libgnat/system-darwin-ppc.ads +++ b/gcc/ada/libgnat/system-darwin-ppc.ads @@ -166,7 +166,6 @@ 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/libgnat/system-darwin-x86.ads b/gcc/ada/libgnat/system-darwin-x86.ads index 378fa9b..8d8e5f0 100644 --- a/gcc/ada/libgnat/system-darwin-x86.ads +++ b/gcc/ada/libgnat/system-darwin-x86.ads @@ -166,7 +166,6 @@ 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/libgnat/system-djgpp.ads b/gcc/ada/libgnat/system-djgpp.ads index 31a5351..1148a46 100644 --- a/gcc/ada/libgnat/system-djgpp.ads +++ b/gcc/ada/libgnat/system-djgpp.ads @@ -140,7 +140,6 @@ 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/libgnat/system-dragonfly-x86_64.ads b/gcc/ada/libgnat/system-dragonfly-x86_64.ads index 37726fe..90abfe9 100644 --- a/gcc/ada/libgnat/system-dragonfly-x86_64.ads +++ b/gcc/ada/libgnat/system-dragonfly-x86_64.ads @@ -140,7 +140,6 @@ 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/libgnat/system-freebsd.ads b/gcc/ada/libgnat/system-freebsd.ads index 3604280..fcc0c4f 100644 --- a/gcc/ada/libgnat/system-freebsd.ads +++ b/gcc/ada/libgnat/system-freebsd.ads @@ -141,7 +141,6 @@ 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/libgnat/system-hpux-ia64.ads b/gcc/ada/libgnat/system-hpux-ia64.ads index 4268ff5..0562bf7 100644 --- a/gcc/ada/libgnat/system-hpux-ia64.ads +++ b/gcc/ada/libgnat/system-hpux-ia64.ads @@ -140,7 +140,6 @@ 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/libgnat/system-hpux.ads b/gcc/ada/libgnat/system-hpux.ads index a412645..a8848d6 100644 --- a/gcc/ada/libgnat/system-hpux.ads +++ b/gcc/ada/libgnat/system-hpux.ads @@ -139,7 +139,6 @@ 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/libgnat/system-linux-alpha.ads b/gcc/ada/libgnat/system-linux-alpha.ads index b6f1550..56d708d 100644 --- a/gcc/ada/libgnat/system-linux-alpha.ads +++ b/gcc/ada/libgnat/system-linux-alpha.ads @@ -140,7 +140,6 @@ 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/libgnat/system-linux-arm.ads b/gcc/ada/libgnat/system-linux-arm.ads index 10fc281..6f2cb24 100644 --- a/gcc/ada/libgnat/system-linux-arm.ads +++ b/gcc/ada/libgnat/system-linux-arm.ads @@ -149,7 +149,6 @@ 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/libgnat/system-linux-hppa.ads b/gcc/ada/libgnat/system-linux-hppa.ads index 9a40009..d4b8364 100644 --- a/gcc/ada/libgnat/system-linux-hppa.ads +++ b/gcc/ada/libgnat/system-linux-hppa.ads @@ -139,7 +139,6 @@ 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/libgnat/system-linux-ia64.ads b/gcc/ada/libgnat/system-linux-ia64.ads index 85e9c9e..0ebc233 100644 --- a/gcc/ada/libgnat/system-linux-ia64.ads +++ b/gcc/ada/libgnat/system-linux-ia64.ads @@ -148,7 +148,6 @@ 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/libgnat/system-linux-m68k.ads b/gcc/ada/libgnat/system-linux-m68k.ads index 83ac5ea..2189465 100644 --- a/gcc/ada/libgnat/system-linux-m68k.ads +++ b/gcc/ada/libgnat/system-linux-m68k.ads @@ -150,7 +150,6 @@ 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/libgnat/system-linux-mips.ads b/gcc/ada/libgnat/system-linux-mips.ads index 5013883..d3bafb2 100644 --- a/gcc/ada/libgnat/system-linux-mips.ads +++ b/gcc/ada/libgnat/system-linux-mips.ads @@ -140,7 +140,6 @@ 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/libgnat/system-linux-ppc.ads b/gcc/ada/libgnat/system-linux-ppc.ads index 84cf532..0b8aad9 100644 --- a/gcc/ada/libgnat/system-linux-ppc.ads +++ b/gcc/ada/libgnat/system-linux-ppc.ads @@ -148,7 +148,6 @@ 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/libgnat/system-linux-riscv.ads b/gcc/ada/libgnat/system-linux-riscv.ads index 56f4d09..c656604 100644 --- a/gcc/ada/libgnat/system-linux-riscv.ads +++ b/gcc/ada/libgnat/system-linux-riscv.ads @@ -139,7 +139,6 @@ 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/libgnat/system-linux-s390.ads b/gcc/ada/libgnat/system-linux-s390.ads index 24803e2..ee1e87a 100644 --- a/gcc/ada/libgnat/system-linux-s390.ads +++ b/gcc/ada/libgnat/system-linux-s390.ads @@ -139,7 +139,6 @@ 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/libgnat/system-linux-sh4.ads b/gcc/ada/libgnat/system-linux-sh4.ads index 5cee747..c4fb6ed 100644 --- a/gcc/ada/libgnat/system-linux-sh4.ads +++ b/gcc/ada/libgnat/system-linux-sh4.ads @@ -147,7 +147,6 @@ 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/libgnat/system-linux-sparc.ads b/gcc/ada/libgnat/system-linux-sparc.ads index db46b74..cc502da 100644 --- a/gcc/ada/libgnat/system-linux-sparc.ads +++ b/gcc/ada/libgnat/system-linux-sparc.ads @@ -139,7 +139,6 @@ 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/libgnat/system-linux-x86.ads b/gcc/ada/libgnat/system-linux-x86.ads index 87eb903..9336207 100644 --- a/gcc/ada/libgnat/system-linux-x86.ads +++ b/gcc/ada/libgnat/system-linux-x86.ads @@ -148,7 +148,6 @@ 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/libgnat/system-lynxos178-ppc.ads b/gcc/ada/libgnat/system-lynxos178-ppc.ads index ebf8132..2a693c5 100644 --- a/gcc/ada/libgnat/system-lynxos178-ppc.ads +++ b/gcc/ada/libgnat/system-lynxos178-ppc.ads @@ -154,7 +154,6 @@ 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 := False; end System; diff --git a/gcc/ada/libgnat/system-lynxos178-x86.ads b/gcc/ada/libgnat/system-lynxos178-x86.ads index 302a2f3..2f13aae 100644 --- a/gcc/ada/libgnat/system-lynxos178-x86.ads +++ b/gcc/ada/libgnat/system-lynxos178-x86.ads @@ -154,7 +154,6 @@ 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 := False; end System; diff --git a/gcc/ada/libgnat/system-mingw.ads b/gcc/ada/libgnat/system-mingw.ads index 77fb6f0..a2eaf6a 100644 --- a/gcc/ada/libgnat/system-mingw.ads +++ b/gcc/ada/libgnat/system-mingw.ads @@ -140,7 +140,6 @@ 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/libgnat/system-qnx-aarch64.ads b/gcc/ada/libgnat/system-qnx-aarch64.ads index 827f9df..7e61ae3 100644 --- a/gcc/ada/libgnat/system-qnx-aarch64.ads +++ b/gcc/ada/libgnat/system-qnx-aarch64.ads @@ -149,7 +149,6 @@ 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/libgnat/system-rtems.ads b/gcc/ada/libgnat/system-rtems.ads index 06f7831..5959b72 100644 --- a/gcc/ada/libgnat/system-rtems.ads +++ b/gcc/ada/libgnat/system-rtems.ads @@ -156,7 +156,6 @@ 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/libgnat/system-solaris-sparc.ads b/gcc/ada/libgnat/system-solaris-sparc.ads index 2ba5198..c15a517 100644 --- a/gcc/ada/libgnat/system-solaris-sparc.ads +++ b/gcc/ada/libgnat/system-solaris-sparc.ads @@ -140,7 +140,6 @@ 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/libgnat/system-solaris-x86.ads b/gcc/ada/libgnat/system-solaris-x86.ads index 7872523..981e7ca 100644 --- a/gcc/ada/libgnat/system-solaris-x86.ads +++ b/gcc/ada/libgnat/system-solaris-x86.ads @@ -140,7 +140,6 @@ 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/libgnat/system-vxworks-arm-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads index 4273245..42d14c4 100644 --- a/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads @@ -158,7 +158,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks-arm-rtp.ads b/gcc/ada/libgnat/system-vxworks-arm-rtp.ads index 214e3d5..aa8515a 100644 --- a/gcc/ada/libgnat/system-vxworks-arm-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-arm-rtp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks-arm.ads b/gcc/ada/libgnat/system-vxworks-arm.ads index be391d0..ae09b78 100644 --- a/gcc/ada/libgnat/system-vxworks-arm.ads +++ b/gcc/ada/libgnat/system-vxworks-arm.ads @@ -152,7 +152,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks-e500-kernel.ads b/gcc/ada/libgnat/system-vxworks-e500-kernel.ads index 9ee828b..4b091ae 100644 --- a/gcc/ada/libgnat/system-vxworks-e500-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks-e500-kernel.ads @@ -153,7 +153,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads index d7ab0a9..a5d4d87 100644 --- a/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads @@ -159,7 +159,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks-e500-rtp.ads b/gcc/ada/libgnat/system-vxworks-e500-rtp.ads index e304d50..4f96385 100644 --- a/gcc/ada/libgnat/system-vxworks-e500-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-e500-rtp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads index 6cf9b3f..b8a0ba1 100644 --- a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads @@ -152,7 +152,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads index 07da01d..ecfd7e6 100644 --- a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads @@ -158,7 +158,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads index b6807b3..72fb963 100644 --- a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks-x86-kernel.ads b/gcc/ada/libgnat/system-vxworks-x86-kernel.ads index c8cbf52..4c912b8 100644 --- a/gcc/ada/libgnat/system-vxworks-x86-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks-x86-kernel.ads @@ -156,7 +156,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads index d70642e..f8115a5 100644 --- a/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks-x86-rtp.ads b/gcc/ada/libgnat/system-vxworks-x86-rtp.ads index 262445d..8894abb 100644 --- a/gcc/ada/libgnat/system-vxworks-x86-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks-x86-rtp.ads @@ -156,7 +156,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads index a739441..0556cbf 100644 --- a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64.ads b/gcc/ada/libgnat/system-vxworks7-aarch64.ads index 840682b..8bf58b7 100644 --- a/gcc/ada/libgnat/system-vxworks7-aarch64.ads +++ b/gcc/ada/libgnat/system-vxworks7-aarch64.ads @@ -154,7 +154,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads index c82f8fc..1341b9d 100644 --- a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads @@ -154,7 +154,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-arm.ads b/gcc/ada/libgnat/system-vxworks7-arm.ads index be391d0..ae09b78 100644 --- a/gcc/ada/libgnat/system-vxworks7-arm.ads +++ b/gcc/ada/libgnat/system-vxworks7-arm.ads @@ -152,7 +152,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads b/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads index bb72157..c7b2c97 100644 --- a/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads @@ -153,7 +153,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads index d4b4dce..a9dbf97 100644 --- a/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads @@ -158,7 +158,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads b/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads index 7f7f817..83e44cb 100644 --- a/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads index 2b83609..e7dfc29 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads @@ -152,7 +152,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads index f232b34..146a87b 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads b/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads index 1c59deb..0e448d4 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads index 942c4b1..70c1e7c 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads @@ -154,7 +154,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads index 42aeb34..bb42c6a1 100644 --- a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads @@ -157,7 +157,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads index f84d8f0..f7be01d 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads @@ -153,7 +153,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads index 26e35ab..05cadbc 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads @@ -156,7 +156,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads b/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads index 9eb643c..aebbfd7 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads @@ -156,7 +156,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads index 6cdd59e..ed9850f 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads @@ -153,7 +153,6 @@ 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; Executable_Extension : constant String := ".out"; diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads index 47a91e6..3c98b4c 100644 --- a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads +++ b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads @@ -156,7 +156,6 @@ 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; Executable_Extension : constant String := ".vxe"; diff --git a/gcc/ada/opt.adb b/gcc/ada/opt.adb index ae6b844..24f6cc9 100644 --- a/gcc/ada/opt.adb +++ b/gcc/ada/opt.adb @@ -27,37 +27,13 @@ with Csets; use Csets; package body Opt is - ------------------------- - -- 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; + return Exception_Mechanism = Back_End_SJLJ; end SJLJ_Exceptions; -------------------- diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index c38a93f..0d8b25f 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -567,13 +567,7 @@ package Opt is type Exception_Mechanism_Type is -- Determines the kind of mechanism used to handle 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_ZCX, + (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 @@ -589,16 +583,13 @@ package Opt is -- WARNING: There is a matching C declaration of this type in fe.h - Exception_Mechanism : Exception_Mechanism_Type := Front_End_SJLJ; + Exception_Mechanism : Exception_Mechanism_Type := Back_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. + -- (ZCX_By_Default). The C convention is there to allow access by gigi. -- WARNING: There is a matching C declaration of this variable in fe.h - function Back_End_Exceptions return Boolean; - function Front_End_Exceptions return Boolean; function ZCX_Exceptions return Boolean; function SJLJ_Exceptions return Boolean; -- GNAT diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb index cbf9944..fe436c0 100644 --- a/gcc/ada/targparm.adb +++ b/gcc/ada/targparm.adb @@ -48,7 +48,6 @@ package body Targparm is D32, -- Duration_32_Bits DEN, -- Denorm EXS, -- Exit_Status_Supported - FEX, -- Frontend_Exceptions MOV, -- Machine_Overflows MRN, -- Machine_Rounds PAS, -- Preallocated_Stacks @@ -79,7 +78,6 @@ package body Targparm is D32_Str : aliased constant Source_Buffer := "Duration_32_Bits"; DEN_Str : aliased constant Source_Buffer := "Denorm"; EXS_Str : aliased constant Source_Buffer := "Exit_Status_Supported"; - FEX_Str : aliased constant Source_Buffer := "Frontend_Exceptions"; MOV_Str : aliased constant Source_Buffer := "Machine_Overflows"; MRN_Str : aliased constant Source_Buffer := "Machine_Rounds"; PAS_Str : aliased constant Source_Buffer := "Preallocated_Stacks"; @@ -110,7 +108,6 @@ package body Targparm is D32 => D32_Str'Access, DEN => DEN_Str'Access, EXS => EXS_Str'Access, - FEX => FEX_Str'Access, MOV => MOV_Str'Access, MRN => MRN_Str'Access, PAS => PAS_Str'Access, @@ -800,7 +797,6 @@ package body Targparm is when D32 => Duration_32_Bits_On_Target := Result; when DEN => Denorm_On_Target := Result; when EXS => Exit_Status_Supported_On_Target := Result; - when FEX => Frontend_Exceptions_On_Target := Result; when MOV => Machine_Overflows_On_Target := Result; when MRN => Machine_Rounds_On_Target := Result; when PAS => Preallocated_Stacks_On_Target := Result; diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads index 9353d92..3d3290b 100644 --- a/gcc/ada/targparm.ads +++ b/gcc/ada/targparm.ads @@ -263,9 +263,6 @@ package Targparm is ZCX_By_Default_On_Target : Boolean := False; -- 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 -- ------------------------------------ -- 2.7.4