aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/a-except-2005.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-08-29 16:26:53 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-08-29 16:26:53 +0200
commit8027b4559bbfa23f098c171d3200973dd11a9da9 (patch)
tree7503d76fb896f9f7f8a1f7bf685661ffecfe4abb /gcc/ada/a-except-2005.adb
parentd85fd922e12315cd65061ed85f7afb40fe7ff958 (diff)
downloadgcc-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.adb40
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 --
-------------