diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-17 06:19:52 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-17 06:19:52 +0000 |
commit | 15a67a0aa67eed2e489dc94302b56c7687c402c2 (patch) | |
tree | 0f370971becd91540a889f7fd0b77b56047682bc /gcc/ada/sinfo.ads | |
parent | 0fa54be6fbae5d8b886ab4e9e9beb45397c28815 (diff) | |
download | gcc-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.ads | 13 |
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); |