* [Ada] Detect expansion of iterated component associations into loops
@ 2022-09-05 7:26 Marc Poulhiès
0 siblings, 0 replies; only message in thread
From: Marc Poulhiès @ 2022-09-05 7:26 UTC (permalink / raw)
To: gcc-patches; +Cc: Piotr Trojanek
[-- Attachment #1: Type: text/plain, Size: 548 bytes --]
Iterated component associations are expanded into loops, which GNAT
should detect as violating restriction No_Implicit_Loops; same for
iterated element associations and delta array aggregates.
Part of cleanups for correct handling of iterated component associations
in SPARK.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* exp_aggr.adb
(Two_Pass_Aggregate_Expansion): Expand into implicit rather than
ordinary loops, to detect violations of restriction
No_Implicit_Loops.
(Generate_Loop): Likewise for delta array aggregates.
[-- Attachment #2: patch.diff --]
[-- Type: text/x-diff, Size: 1278 bytes --]
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -6430,7 +6430,7 @@ package body Exp_Aggr is
Left_Opnd => New_Occurrence_Of (Size_Id, Loc),
Right_Opnd => Make_Integer_Literal (Loc, 1)));
- One_Loop := Make_Loop_Statement (Loc,
+ One_Loop := Make_Implicit_Loop_Statement (N,
Iteration_Scheme =>
Make_Iteration_Scheme (Loc,
Iterator_Specification => New_Copy_Tree (Iter)),
@@ -6562,7 +6562,7 @@ package body Exp_Aggr is
Attribute_Name => Name_Last)),
Then_Statements => New_List (Incr));
- One_Loop := Make_Loop_Statement (Loc,
+ One_Loop := Make_Implicit_Loop_Statement (N,
Iteration_Scheme =>
Make_Iteration_Scheme (Loc,
Iterator_Specification => Copy_Separate_Tree (Iter)),
@@ -8000,7 +8000,7 @@ package body Exp_Aggr is
end if;
return
- Make_Loop_Statement (Loc,
+ Make_Implicit_Loop_Statement (C,
Iteration_Scheme =>
Make_Iteration_Scheme (Sl,
Loop_Parameter_Specification =>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-09-05 7:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-05 7:26 [Ada] Detect expansion of iterated component associations into loops Marc Poulhiès
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).