[Ada] Unnesting: handle statement sequences that include an At_End handler
2018-05-29 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * exp_unst.adb (Visit_Node): Handle statement sequences that include an At_End handler. From-SVN: r260885
This commit is contained in:
parent
944e24a31a
commit
999acab61b
@ -1,3 +1,8 @@
|
||||
2018-05-29 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* exp_unst.adb (Visit_Node): Handle statement sequences that include an
|
||||
At_End handler.
|
||||
|
||||
2018-05-29 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* repinfo.adb (List_Entities): Also recurse into blocks without label.
|
||||
|
@ -676,6 +676,16 @@ package body Exp_Unst is
|
||||
end loop;
|
||||
end;
|
||||
|
||||
elsif Nkind (N) = N_Handled_Sequence_Of_Statements
|
||||
and then Present (At_End_Proc (N))
|
||||
then
|
||||
|
||||
-- An At_End_Proc means there's a call from this block
|
||||
-- to that subprogram.
|
||||
|
||||
Append_Unique_Call ((N, Current_Subprogram,
|
||||
Entity (At_End_Proc (N))));
|
||||
|
||||
-- Handle a 'Access as a (potential) call
|
||||
|
||||
elsif Nkind (N) = N_Attribute_Reference then
|
||||
@ -850,10 +860,10 @@ package body Exp_Unst is
|
||||
and then Chars (Enclosing_Subprogram (Ent)) /= Name_uParent
|
||||
and then
|
||||
|
||||
-- Constants, variables and exceptions are potentially
|
||||
-- Constants and variables are potentially
|
||||
-- uplevel references to global declarations.
|
||||
|
||||
(Ekind_In (Ent, E_Constant, E_Exception, E_Variable)
|
||||
(Ekind_In (Ent, E_Constant, E_Variable)
|
||||
|
||||
-- Formals are interesting, but not if being used as mere
|
||||
-- names of parameters for name notation calls.
|
||||
@ -1817,6 +1827,7 @@ package body Exp_Unst is
|
||||
begin
|
||||
if Present (STT.ARECnF)
|
||||
and then Nkind (CTJ.N) /= N_Attribute_Reference
|
||||
and then Nkind (CTJ.N) /= N_Handled_Sequence_Of_Statements
|
||||
then
|
||||
-- CTJ.N is a call to a subprogram which may require a pointer
|
||||
-- to an activation record. The subprogram containing the call
|
||||
|
Loading…
x
Reference in New Issue
Block a user