aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_aggr.adb
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2021-12-21 15:20:30 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2022-01-07 16:24:14 +0000
commitd7b2fad2ec6652194aab0b9acfd41f187c4396d0 (patch)
tree1d277c89813306afb59b9beee931bfc4fac9f9e8 /gcc/ada/exp_aggr.adb
parent2eed8f16bfefbf50d991419cc11fe9a0e2122aa8 (diff)
downloadgcc-d7b2fad2ec6652194aab0b9acfd41f187c4396d0.zip
gcc-d7b2fad2ec6652194aab0b9acfd41f187c4396d0.tar.gz
gcc-d7b2fad2ec6652194aab0b9acfd41f187c4396d0.tar.bz2
[Ada] More default initialization for multi-dim array aggregates
gcc/ada/ * exp_aggr.adb (Gen_Assign): Remove explicit initialization for components of access types. (Get_Assoc_Expr): Enable initialization for components of all types that require simple initialization.
Diffstat (limited to 'gcc/ada/exp_aggr.adb')
-rw-r--r--gcc/ada/exp_aggr.adb19
1 files changed, 4 insertions, 15 deletions
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 89f2ce6..4dfe280 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -1872,12 +1872,6 @@ package body Exp_Aggr is
Set_Etype (Indexed_Comp, Ctype);
Append_To (Stmts, Make_Invariant_Call (Indexed_Comp));
end if;
-
- elsif Is_Access_Type (Ctype) then
- Append_To (Stmts,
- Make_Assignment_Statement (Loc,
- Name => New_Copy_Tree (Indexed_Comp),
- Expression => Make_Null (Loc)));
end if;
if Needs_Finalization (Ctype) then
@@ -2212,15 +2206,10 @@ package body Exp_Aggr is
begin
if Box_Present (Assoc) then
- if Is_Scalar_Type (Ctype) then
- if Present (Default_Aspect_Component_Value (Typ)) then
- return Default_Aspect_Component_Value (Typ);
- elsif Present (Default_Aspect_Value (Ctype)) then
- return Default_Aspect_Value (Ctype);
- else
- return Empty;
- end if;
-
+ if Present (Default_Aspect_Component_Value (Typ)) then
+ return Default_Aspect_Component_Value (Typ);
+ elsif Needs_Simple_Initialization (Ctype) then
+ return Get_Simple_Init_Val (Ctype, N);
else
return Empty;
end if;