[Ada] Fix a recent ACATS regression (c552001)

2019-08-14  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for
	arrays with bounds not known at compile time.

From-SVN: r274450
This commit is contained in:
Javier Miranda 2019-08-14 09:51:07 +00:00 committed by Pierre-Marie de Rodat
parent cc248146c1
commit d2d56bbae3
2 changed files with 32 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2019-08-14 Javier Miranda <miranda@adacore.com>
* exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for
arrays with bounds not known at compile time.
2019-08-14 Ed Schonberg <schonberg@adacore.com>
* sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified

View File

@ -7707,15 +7707,36 @@ package body Exp_Aggr is
P := Parent (P);
end loop;
-- Cases where aggregates are supported by the CCG backend
-- Check cases where aggregates are supported by the CCG backend
if Nkind (P) = N_Object_Declaration then
return True;
declare
P_Typ : constant Entity_Id := Etype (Defining_Identifier (P));
elsif Nkind (P) = N_Qualified_Expression
and then Nkind_In (Parent (P), N_Allocator, N_Object_Declaration)
then
return True;
begin
if Is_Record_Type (P_Typ) then
return True;
else
return Compile_Time_Known_Bounds (P_Typ);
end if;
end;
elsif Nkind (P) = N_Qualified_Expression then
if Nkind (Parent (P)) = N_Object_Declaration then
declare
P_Typ : constant Entity_Id :=
Etype (Defining_Identifier (Parent (P)));
begin
if Is_Record_Type (P_Typ) then
return True;
else
return Compile_Time_Known_Bounds (P_Typ);
end if;
end;
elsif Nkind (Parent (P)) = N_Allocator then
return True;
end if;
end if;
return False;