aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch7.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2012-05-15 12:22:07 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2012-05-15 12:22:07 +0200
commit799d0e05c71f63b11ddb7d64f314c1281fe53cfb (patch)
treea5d47583428526feb383a0496917baf367d642b3 /gcc/ada/exp_ch7.adb
parent0c644c99db0e5a83b8106a25e8346c2ecc250297 (diff)
downloadgcc-799d0e05c71f63b11ddb7d64f314c1281fe53cfb.zip
gcc-799d0e05c71f63b11ddb7d64f314c1281fe53cfb.tar.gz
gcc-799d0e05c71f63b11ddb7d64f314c1281fe53cfb.tar.bz2
[multiple changes]
2012-05-15 Robert Dewar <dewar@adacore.com> * exp_ch7.adb, exp_ch11.adb, exp_ch11.ads: Minor reformatting. 2012-05-15 Thomas Quinot <quinot@adacore.com> * sem_res.adb (Resolve): Enforce E.2.2(11/2) and E.2.2(12) for 'Unrestricted_Access and 'Unchecked_Access (not just 'Access): even in those cases, a remote access type may only designate a remote subprogram. 2012-05-15 Thomas Quinot <quinot@adacore.com> * sem_util.adb, sem_util.ads, sem_cat.adb: Minor refactoring. (Enclosing_Lib_Unit_Node): Rename to Enclosing_Comp_Unit_Node. 2012-05-15 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Remove obsolete checks on nested inlined subprograms. 2012-05-15 Tristan Gingold <gingold@adacore.com> * fe.h (Get_RT_Exception_Name): Declare. 2012-05-15 Tristan Gingold <gingold@adacore.com> * raise-gcc.c (db_region_for): Use %p + cast to avoid warnings. (get_region_description_for): Likewise. (db_action_for): Likewise. (get_call_site_action_for): Likewise. (get_ttype_entry_for): Remove useless 'const'. (PERSONALITY_FUNCTION): Add ATTRIBUTE_UNUSED on uw_exception_class. 2012-05-15 Tristan Gingold <gingold@adacore.com> * a-exextr.adb (Unhandled_Exception_Terminate): Save occurrence on the stack to avoid a dynamic memory allocation. 2012-05-15 Bob Duff <duff@adacore.com> * exp_ch9.adb (Expand_N_Timed_Entry_Call): Move initialization of E_Stats and D_Stats after Process_Statements_For_Controlled_Objects, because those calls can destroy the Statements list. From-SVN: r187518
Diffstat (limited to 'gcc/ada/exp_ch7.adb')
-rw-r--r--gcc/ada/exp_ch7.adb21
1 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index 3d3df50..6c42ad6 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -723,9 +723,10 @@ package body Exp_Ch7 is
pragma Assert (Present (Data.Raised_Id));
if Exception_Extra_Info
- or else (For_Library and then not Restricted_Profile)
+ or else (For_Library and not Restricted_Profile)
then
if Exception_Extra_Info then
+
-- Generate:
-- Get_Current_Excep.all
@@ -735,8 +736,9 @@ package body Exp_Ch7 is
Name =>
Make_Explicit_Dereference (Data.Loc,
Prefix =>
- New_Reference_To (RTE (RE_Get_Current_Excep),
- Data.Loc)));
+ New_Reference_To
+ (RTE (RE_Get_Current_Excep), Data.Loc)));
+
else
-- Generate:
@@ -748,15 +750,17 @@ package body Exp_Ch7 is
if For_Library and then not Restricted_Profile then
Proc_To_Call := RTE (RE_Save_Library_Occurrence);
Actuals := New_List (Except);
+
else
Proc_To_Call := RTE (RE_Save_Occurrence);
-- The dereference occurs only when Exception_Extra_Info is true,
-- and therefore Except is not null.
- Actuals := New_List (
- New_Reference_To (Data.E_Id, Data.Loc),
- Make_Explicit_Dereference (Data.Loc, Except));
+ Actuals :=
+ New_List (
+ New_Reference_To (Data.E_Id, Data.Loc),
+ Make_Explicit_Dereference (Data.Loc, Except));
end if;
-- Generate:
@@ -3054,6 +3058,7 @@ package body Exp_Ch7 is
A_Expr := New_Reference_To (RTE (RE_Triggered_By_Abort), Loc);
-- Generate:
+
-- Abort_Id : constant Boolean := <A_Expr>;
Append_To (Decls,
@@ -3073,6 +3078,7 @@ package body Exp_Ch7 is
Data.E_Id := Make_Temporary (Loc, 'E');
-- Generate:
+
-- E_Id : Exception_Occurrence;
E_Decl :=
@@ -3089,6 +3095,7 @@ package body Exp_Ch7 is
end if;
-- Generate:
+
-- Raised_Id : Boolean := False;
Append_To (Decls,
@@ -3134,6 +3141,7 @@ package body Exp_Ch7 is
end if;
-- Generate:
+
-- Raised_Id and then not Abort_Id
-- <or>
-- Raised_Id
@@ -3149,6 +3157,7 @@ package body Exp_Ch7 is
end if;
-- Generate:
+
-- if Raised_Id and then not Abort_Id then
-- Raise_From_Controlled_Operation (E_Id);
-- <or>