summaryrefslogtreecommitdiff
path: root/gcc/ada/sinfo.ads
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-17 06:19:52 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-17 06:19:52 +0000
commit15a67a0aa67eed2e489dc94302b56c7687c402c2 (patch)
tree0f370971becd91540a889f7fd0b77b56047682bc /gcc/ada/sinfo.ads
parent0fa54be6fbae5d8b886ab4e9e9beb45397c28815 (diff)
downloadgcc-15a67a0aa67eed2e489dc94302b56c7687c402c2.tar.gz
2014-07-17 Thomas Quinot <quinot@adacore.com>
* sem.ads (Scope_Stack_Entry): Reorganize storage of action lists; introduce a new list (cleanup actions) for each (transient) scope. * sinfo.ads, sinfo.adb (Cleanup_Actions): New attribute for N_Block_Statement * exp_ch7.ads (Store_Cleanup_Actions_In_Scope): New subprogram. * exp_ch7.adb (Store_Actions_In_Scope): New subprogram, common processing for Store_xxx_Actions_In_Scope. (Build_Cleanup_Statements): Allow for a list of additional cleanup statements to be passed by the caller. (Expand_Cleanup_Actions): Take custom cleanup actions associated with an N_Block_Statement into account. (Insert_Actions_In_Scope_Around): Account for Scope_Stack_Entry reorganization (refactoring only, no behaviour change). (Make_Transient_Block): Add assertion to ensure that the current scope is indeed a block (namely, the entity for the transient block being constructed syntactically, which has already been established as a scope). If cleanup actions are present in the transient scope, transfer them now to the transient block. * exp_ch6.adb (Expand_Protected_Subprogram_Call): Freeze the called function while it is still present as the name in a call in the tree. This may not be the case later on if the call is rewritten into a transient block. * exp_smem.adb (Add_Shared_Var_Lock_Procs): The post-actions inserted after calling a protected operation on a shared passive protected must be performed in a block finalizer, not just inserted in the tree, so that they are executed even in case of a normal (RETURN) or abnormal (exception) transfer of control outside of the current scope. * exp_smem.ads (Add_Shared_Var_Lock_Procs): Update documentation * sem_ch8.adb, expander.adb, exp_ch11.adb: Adjust for Scope_Stack_Entry reorganization. 2014-07-17 Thomas Quinot <quinot@adacore.com> * exp_disp.adb (Make_DT, Make_VM_TSD): Do not omit Check_TSD call for types that do not have an explicit attribute definition clause for External_Tag, as their default tag may clash with an explicit tag defined for some other type. 2014-07-17 Hristian Kirtchev <kirtchev@adacore.com> * exp_util.adb (Is_Controlled_Function_Call): Recognize a controlled function call with multiple actual parameters that appears in Object.Operation form. 2014-07-17 Thomas Quinot <quinot@adacore.com> * einfo.ads, einfo.adb (Has_External_Tag_Rep_Clause): Remove entity flag. * sem_ch13.adb (Analyze_Attribute_Definition_Clause, case External_Tag): No need to set entity flag. * sem_aux.ads, sem_aux.adb (Has_External_Tag_Rep_Clause): Reimplement correctly in terms of Has_Rep_Item. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212719 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sinfo.ads')
-rw-r--r--gcc/ada/sinfo.ads13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index be0e6498dd7..4c282132abd 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -832,6 +832,10 @@ package Sinfo is
-- the secondary stack and thus the result is passed by reference rather
-- than copied another time.
+ -- Cleanup_Actions (List5-Sem)
+ -- Present in block statements created for transient blocks, contains
+ -- additional cleanup actions carried over from the transient scope.
+
-- Check_Address_Alignment (Flag11-Sem)
-- A flag present in N_Attribute_Definition clause for a 'Address
-- attribute definition. This flag is set if a dynamic check should be
@@ -4731,6 +4735,7 @@ package Sinfo is
-- Identifier (Node1) block direct name (set to Empty if not present)
-- Declarations (List2) (set to No_List if no DECLARE part)
-- Handled_Statement_Sequence (Node4)
+ -- Cleanup_Actions (List5-Sem)
-- Is_Task_Master (Flag5-Sem)
-- Activation_Chain_Entity (Node3-Sem)
-- Has_Created_Identifier (Flag15)
@@ -8689,6 +8694,9 @@ package Sinfo is
function Classifications
(N : Node_Id) return Node_Id; -- Node3
+ function Cleanup_Actions
+ (N : Node_Id) return List_Id; -- List5
+
function Comes_From_Extended_Return_Statement
(N : Node_Id) return Boolean; -- Flag18
@@ -9696,6 +9704,9 @@ package Sinfo is
procedure Set_Classifications
(N : Node_Id; Val : Node_Id); -- Node3
+ procedure Set_Cleanup_Actions
+ (N : Node_Id; Val : List_Id); -- List5
+
procedure Set_Comes_From_Extended_Return_Statement
(N : Node_Id; Val : Boolean := True); -- Flag18
@@ -12369,6 +12380,7 @@ package Sinfo is
pragma Inline (Choices);
pragma Inline (Class_Present);
pragma Inline (Classifications);
+ pragma Inline (Cleanup_Actions);
pragma Inline (Comes_From_Extended_Return_Statement);
pragma Inline (Compile_Time_Known_Aggregate);
pragma Inline (Component_Associations);
@@ -12702,6 +12714,7 @@ package Sinfo is
pragma Inline (Set_Choices);
pragma Inline (Set_Class_Present);
pragma Inline (Set_Classifications);
+ pragma Inline (Set_Cleanup_Actions);
pragma Inline (Set_Comes_From_Extended_Return_Statement);
pragma Inline (Set_Compile_Time_Known_Aggregate);
pragma Inline (Set_Component_Associations);