N_Quantified_Expression and N_Iterated_Component_Association are
unrelated nodes that cannot appear in the same context: the former can
appear wherever an expression node is acceptable whereas the latter can
appear only as an element of a component association list. So a test
combining both most likely contains a dead arm and this change removes a
couple of them.
No functional changes.
Tested on x86_64-pc-linux-gnu, committed on trunk
2018-11-14 Eric Botcazou <ebotca...@adacore.com>
gcc/ada/
* exp_aggr.adb (Check_Static_Components): Remove dead test.
(Flatten): Likewise. Move comment around.
--- gcc/ada/exp_aggr.adb
+++ gcc/ada/exp_aggr.adb
@@ -4367,8 +4367,7 @@ package body Exp_Aggr is
elsif Nkind (Expression (Expr)) /= N_Aggregate
or else not Compile_Time_Known_Aggregate (Expression (Expr))
or else Expansion_Delayed (Expression (Expr))
- or else Nkind_In (Expr, N_Iterated_Component_Association,
- N_Quantified_Expression)
+ or else Nkind (Expr) = N_Iterated_Component_Association
then
Static_Components := False;
exit;
@@ -4521,16 +4520,15 @@ package body Exp_Aggr is
-- If we have an others choice, fill in the missing elements
-- subject to the limit established by Max_Others_Replicate.
- -- If the expression involves a construct that generates
- -- a loop, we must generate individual assignments and
- -- no flattening is possible.
if Nkind (Choice) = N_Others_Choice then
Rep_Count := 0;
- if Nkind_In (Expression (Elmt),
- N_Iterated_Component_Association,
- N_Quantified_Expression)
+ -- If the expression involves a construct that generates
+ -- a loop, we must generate individual assignments and
+ -- no flattening is possible.
+
+ if Nkind (Expression (Elmt)) = N_Quantified_Expression
then
return False;
end if;