[Ada] Unnesting: improve handling of bounds for formal parameters

2018-06-11  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* exp_unst.adb (Visit_Node): Check reference to formal parameter of
	current procedure, because the bounds of its type may be uplevel
	references.

From-SVN: r261394
This commit is contained in:
Ed Schonberg 2018-06-11 09:15:03 +00:00 committed by Pierre-Marie de Rodat
parent 8c6fc01486
commit b516a1a96b
2 changed files with 20 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2018-06-11 Ed Schonberg <schonberg@adacore.com>
* exp_unst.adb (Visit_Node): Check reference to formal parameter of
current procedure, because the bounds of its type may be uplevel
references.
2018-06-02 Eric Botcazou <ebotcazou@adacore.com> 2018-06-02 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: If this is * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: If this is

View File

@ -999,6 +999,20 @@ package body Exp_Unst is
and then not Is_Static_Type (Ent) and then not Is_Static_Type (Ent)
then then
Note_Uplevel_Ref (Ent, N, Caller, Callee); Note_Uplevel_Ref (Ent, N, Caller, Callee);
-- Check the type of a formal parameter of the current
-- subprogram, whose formal type may be an uplevel
-- reference.
elsif Is_Formal (Ent)
and then Scope (Ent) = Current_Subprogram
then
declare
DT : Boolean := False;
begin
Check_Static_Type (Etype (Ent), Empty, DT);
end;
end if; end if;
end if; end if;
end if; end if;