diff options
| author | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-29 16:26:53 +0200 |
|---|---|---|
| committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2011-08-29 16:26:53 +0200 |
| commit | 8027b4559bbfa23f098c171d3200973dd11a9da9 (patch) | |
| tree | 7503d76fb896f9f7f8a1f7bf685661ffecfe4abb /gcc/ada/a-except-2005.adb | |
| parent | d85fd922e12315cd65061ed85f7afb40fe7ff958 (diff) | |
| download | gcc-8027b4559bbfa23f098c171d3200973dd11a9da9.zip gcc-8027b4559bbfa23f098c171d3200973dd11a9da9.tar.gz gcc-8027b4559bbfa23f098c171d3200973dd11a9da9.tar.bz2 | |
[multiple changes]
2011-08-29 Thomas Quinot <quinot@adacore.com>
* a-except.adb, a-except-2005.adb: Minor comment rewording and
reformatting.
2011-08-29 Yannick Moy <moy@adacore.com>
* sem_ch3.adb (Array_Type_Declaration): Remove insertion of
declaration for Itypes in Alfa mode.
From-SVN: r178246
Diffstat (limited to 'gcc/ada/a-except-2005.adb')
| -rw-r--r-- | gcc/ada/a-except-2005.adb | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/gcc/ada/a-except-2005.adb b/gcc/ada/a-except-2005.adb index 8315a9d..509ea924 100644 --- a/gcc/ada/a-except-2005.adb +++ b/gcc/ada/a-except-2005.adb @@ -422,7 +422,6 @@ package body Ada.Exceptions is procedure Rcheck_19 (File : System.Address; Line : Integer); procedure Rcheck_20 (File : System.Address; Line : Integer); procedure Rcheck_21 (File : System.Address; Line : Integer); - procedure Rcheck_22 (File : System.Address; Line : Integer); procedure Rcheck_23 (File : System.Address; Line : Integer); procedure Rcheck_24 (File : System.Address; Line : Integer); procedure Rcheck_25 (File : System.Address; Line : Integer); @@ -445,6 +444,14 @@ package body Ada.Exceptions is procedure Rcheck_12_Ext (File : System.Address; Line, Column, Index, First, Last : Integer); + procedure Rcheck_22 (File : System.Address; Line : Integer); + -- This routine is separated out because it has quite different behavior + -- from the others. This is the "finalize/adjust raised exception". This + -- subprogram is always called with abort deferred, unlike all other + -- Rcheck_* routines, it needs to call Raise_Exception_No_Defer. + -- + -- It should probably have a distinguished name ??? + pragma Export (C, Rcheck_00, "__gnat_rcheck_00"); pragma Export (C, Rcheck_01, "__gnat_rcheck_01"); pragma Export (C, Rcheck_02, "__gnat_rcheck_02"); @@ -1151,19 +1158,6 @@ package body Ada.Exceptions is Raise_Program_Error_Msg (File, Line, Rmsg_21'Address); end Rcheck_21; - procedure Rcheck_22 (File : System.Address; Line : Integer) is - E : constant Exception_Id := Program_Error_Def'Access; - begin - -- This is "finalize/adjust raised exception". - -- As this exception is only raised with aborts defered, it must - -- call Raise_Exception_No_Defer, contrary to all other Rcheck - -- subprograms (which defer aborts). - -- This is coherent with Raise_From_Controlled_Operation. - - Exception_Data.Set_Exception_C_Msg (E, File, Line, 0, Rmsg_22'Address); - Raise_Current_Excep (E); - end Rcheck_22; - procedure Rcheck_23 (File : System.Address; Line : Integer) is begin Raise_Program_Error_Msg (File, Line, Rmsg_23'Address); @@ -1262,6 +1256,24 @@ package body Ada.Exceptions is Raise_Constraint_Error_Msg (File, Line, Column, Msg'Address); end Rcheck_12_Ext; + --------------- + -- Rcheck_22 -- + --------------- + + procedure Rcheck_22 (File : System.Address; Line : Integer) is + E : constant Exception_Id := Program_Error_Def'Access; + + begin + -- This is "finalize/adjust raised exception". This subprogram is always + -- called with abort deferred, unlike all other Rcheck_* routines, it + -- needs to call Raise_Exception_No_Defer. + + -- This is consistent with Raise_From_Controlled_Operation + + Exception_Data.Set_Exception_C_Msg (E, File, Line, 0, Rmsg_22'Address); + Raise_Current_Excep (E); + end Rcheck_22; + ------------- -- Reraise -- ------------- |
