[Ada] Issue with unnesting of 'First/Last and renaming

2020-06-08  Richard Kenner  <kenner@adacore.com>

gcc/ada/

	* exp_unst.adb (Visit_Node): When visiting array attribute
	nodes, in addition to checking the type of Get_Referenced_Object
	of the prefix, also check the actual type of the prefix.
This commit is contained in:
Richard Kenner 2020-02-17 18:17:58 -05:00 committed by Pierre-Marie de Rodat
parent 24eda9e701
commit 8b0ec65d85
1 changed files with 16 additions and 11 deletions

View File

@ -1049,22 +1049,27 @@ package body Exp_Unst is
-- from the (possibly) uplevel reference. We call
-- Get_Referenced_Object to deal with prefixes that
-- are object renamings (prefixes that are types
-- can be passed and will simply be returned).
-- can be passed and will simply be returned). But
-- it's also legal to get the bounds from the type
-- of the prefix, so we have to handle both cases.
if Is_Constrained
declare
DT : Boolean := False;
begin
if Is_Constrained
(Etype (Get_Referenced_Object (Prefix (N))))
then
declare
DT : Boolean := False;
begin
then
Check_Static_Type
(Etype (Get_Referenced_Object (Prefix (N))),
Empty,
DT);
end;
Empty, DT);
end if;
return OK;
end if;
if Is_Constrained (Etype (Prefix (N))) then
Check_Static_Type
(Etype (Prefix (N)), Empty, DT);
end if;
end;
when others =>
null;