aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-07-21 21:42:17 +0200
committerMarc Poulhiès <poulhies@adacore.com>2022-09-05 09:21:04 +0200
commitf3561c06465c9f4110bd483f35b97201825eec44 (patch)
treeda7aa5881bc5d058650c1c03b6fbb054fd61f93b /gcc
parentd983abebfffbfe03de74fb127de290179b715af4 (diff)
downloadgcc-f3561c06465c9f4110bd483f35b97201825eec44.zip
gcc-f3561c06465c9f4110bd483f35b97201825eec44.tar.gz
gcc-f3561c06465c9f4110bd483f35b97201825eec44.tar.bz2
[Ada] Detect expansion of iterated component associations into loops
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. 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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/exp_aggr.adb6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 157b01e..29bbe76 100644
--- 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 =>