summaryrefslogtreecommitdiff
path: root/gcc/ada/a-except-2005.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-29 11:12:58 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-08-29 11:12:58 +0000
commit7d57741b525b095d0939732b559ce5cad571567b (patch)
treea09f36a00b03affdcdc0059ef6b0c845b9eee7c8 /gcc/ada/a-except-2005.adb
parent53c179ea5916bba5222b8f1c26c676ec7a7eef94 (diff)
downloadgcc-7d57741b525b095d0939732b559ce5cad571567b.tar.gz
Code clean up.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178206 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/a-except-2005.adb')
-rw-r--r--gcc/ada/a-except-2005.adb73
1 files changed, 35 insertions, 38 deletions
diff --git a/gcc/ada/a-except-2005.adb b/gcc/ada/a-except-2005.adb
index 0ff0b5bb8fb..5990e224bc8 100644
--- a/gcc/ada/a-except-2005.adb
+++ b/gcc/ada/a-except-2005.adb
@@ -855,9 +855,11 @@ package body Ada.Exceptions is
-- Go ahead and raise appropriate exception
Exception_Data.Set_Exception_Msg (EF, Message);
+
if not ZCX_By_Default then
Abort_Defer.all;
end if;
+
Raise_Current_Excep (EF);
end Raise_Exception;
@@ -882,57 +884,41 @@ package body Ada.Exceptions is
-------------------------------------
procedure Raise_From_Controlled_Operation
- (X : Ada.Exceptions.Exception_Occurrence;
- From_Abort : Boolean)
+ (X : Ada.Exceptions.Exception_Occurrence)
is
+ Prefix : constant String := "adjust/finalize raised ";
+ Orig_Msg : constant String := Exception_Message (X);
+ Orig_Prefix_Length : constant Natural :=
+ Integer'Min (Prefix'Length, Orig_Msg'Length);
+ Orig_Prefix : String renames Orig_Msg
+ (Orig_Msg'First ..
+ Orig_Msg'First + Orig_Prefix_Length - 1);
begin
- -- When finalization was triggered by an abort, keep propagating the
- -- abort signal rather than raising Program_Error.
-
- if From_Abort then
- raise Standard'Abort_Signal;
+ -- Message already has the proper prefix, just re-raise
- -- Otherwise, raise Program_Error
+ if Orig_Prefix = Prefix then
+ Raise_Exception_No_Defer
+ (E => Program_Error'Identity,
+ Message => Orig_Msg);
else
declare
- Prefix : constant String := "adjust/finalize raised ";
- Orig_Msg : constant String := Exception_Message (X);
- Orig_Prefix_Length : constant Natural :=
- Integer'Min
- (Prefix'Length, Orig_Msg'Length);
- Orig_Prefix : String renames Orig_Msg
- (Orig_Msg'First ..
- Orig_Msg'First + Orig_Prefix_Length - 1);
+ New_Msg : constant String := Prefix & Exception_Name (X);
begin
- -- Message already has the proper prefix, just re-raise
+ -- No message present, just provide our own
- if Orig_Prefix = Prefix then
+ if Orig_Msg = "" then
Raise_Exception_No_Defer
(E => Program_Error'Identity,
- Message => Orig_Msg);
-
- else
- declare
- New_Msg : constant String := Prefix & Exception_Name (X);
+ Message => New_Msg);
- begin
- -- No message present, just provide our own
+ -- Message present, add informational prefix
- if Orig_Msg = "" then
- Raise_Exception_No_Defer
- (E => Program_Error'Identity,
- Message => New_Msg);
-
- -- Message present, add informational prefix
-
- else
- Raise_Exception_No_Defer
- (E => Program_Error'Identity,
- Message => New_Msg & ": " & Orig_Msg);
- end if;
- end;
+ else
+ Raise_Exception_No_Defer
+ (E => Program_Error'Identity,
+ Message => New_Msg & ": " & Orig_Msg);
end if;
end;
end if;
@@ -948,9 +934,11 @@ package body Ada.Exceptions is
is
begin
Exception_Data.Set_Exception_C_Msg (E, M);
+
if not ZCX_By_Default then
Abort_Defer.all;
end if;
+
Debug_Raise_Exception (E => SSL.Exception_Data_Ptr (E));
Exception_Propagation.Propagate_Exception
(E => E, From_Signal_Handler => True);
@@ -1021,9 +1009,11 @@ package body Ada.Exceptions is
is
begin
Exception_Data.Set_Exception_C_Msg (E, F, L, C, M);
+
if not ZCX_By_Default then
Abort_Defer.all;
end if;
+
Raise_Current_Excep (E);
end Raise_With_Location_And_Msg;
@@ -1042,9 +1032,14 @@ package body Ada.Exceptions is
Excep.Num_Tracebacks := 0;
Excep.Cleanup_Flag := False;
Excep.Pid := Local_Partition_ID;
+
+ -- The following is a common pattern, should be abstracted
+ -- into a procedure call ???
+
if not ZCX_By_Default then
Abort_Defer.all;
end if;
+
Raise_Current_Excep (E);
end Raise_With_Msg;
@@ -1303,6 +1298,7 @@ package body Ada.Exceptions is
if not ZCX_By_Default then
Abort_Defer.all;
end if;
+
Exception_Propagation.Setup_Exception
(X'Unrestricted_Access, Get_Current_Excep.all, Reraised => True);
Save_Occurrence_No_Private (Get_Current_Excep.all.all, X);
@@ -1319,6 +1315,7 @@ package body Ada.Exceptions is
if not ZCX_By_Default then
Abort_Defer.all;
end if;
+
Exception_Propagation.Setup_Exception
(X'Unrestricted_Access, Get_Current_Excep.all, Reraised => True);
Save_Occurrence_No_Private (Get_Current_Excep.all.all, X);