aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonan Desplanques <desplanques@adacore.com>2024-03-18 09:58:00 +0100
committerMarc Poulhiès <poulhies@adacore.com>2024-05-17 10:21:07 +0200
commit167462f1977e7ed52a0d0aec8508b45bfe78c54b (patch)
tree104a69c2f9a4bd422c02757b14b619577dc89406
parentfc477a3f361dd5e72512e4ad42ef204af7c4c3e5 (diff)
downloadgcc-167462f1977e7ed52a0d0aec8508b45bfe78c54b.zip
gcc-167462f1977e7ed52a0d0aec8508b45bfe78c54b.tar.gz
gcc-167462f1977e7ed52a0d0aec8508b45bfe78c54b.tar.bz2
ada: Remove outdated workaround in aggregate expansion
Before this patch, the compiler refrained from rewriting aggregates into purely positional form in some cases of one-component aggregates. As explained in comments, this was because the back end could not handle positional aggregates in those situations. As the back end seems to have grown more capable, this patch removes the workaround. It also extends the comments describing a warning that is emitted in the same configuration with aggregates. gcc/ada/ * exp_aggr.adb (Aggr_Size_OK): Remove workaround and extend comment.
-rw-r--r--gcc/ada/exp_aggr.adb9
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 9c5944a..892f47c 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -711,9 +711,10 @@ package body Exp_Aggr is
return True;
end if;
- -- One-component aggregates are suspicious, and if the context type
- -- is an object declaration with nonstatic bounds it will trip gcc;
- -- such an aggregate must be expanded into a single assignment.
+ -- One-component named aggregates where the index constraint is not
+ -- known at compile time are suspicious as the user might have
+ -- intended to write a subtype name but wrote the name of an object
+ -- instead. We emit a warning if we're in such a case.
if Hiv = Lov and then Nkind (Parent (N)) = N_Object_Declaration then
declare
@@ -741,8 +742,6 @@ package body Exp_Aggr is
Error_Msg_N ("\maybe subtype name was meant??", Indx);
end if;
end if;
-
- return False;
end if;
end;
end if;