aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2024-03-29 17:46:43 +0100
committerMarc Poulhiès <poulhies@adacore.com>2024-05-20 09:47:06 +0200
commitbfa743ddc9fd1850a7cc282afe5f3101b544ac64 (patch)
tree3c174d9679bb0cf478ca16726f22bdfdfb5a83b8 /gcc
parentefc7ba5f8f113565b47214d0ffdb27a6638ab8b6 (diff)
downloadgcc-bfa743ddc9fd1850a7cc282afe5f3101b544ac64.zip
gcc-bfa743ddc9fd1850a7cc282afe5f3101b544ac64.tar.gz
gcc-bfa743ddc9fd1850a7cc282afe5f3101b544ac64.tar.bz2
ada: Fix internal error on nested aggregate in conditional expression
This plugs a loophole in the change improving code generation for nested aggregates present in conditional expressions: once the delayed expansion is chosen for the nested aggregate, the expansion of the parent aggregate cannot be left to the back-end and the test must be adjusted to implement this in the presence of conditional expressions too. gcc/ada/ * exp_aggr.adb (Expand_Record_Aggregate.Component_OK_For_Backend): Also return False for a delayed conditional expression.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/exp_aggr.adb4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index a386aa8..796b0f1 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -8376,7 +8376,9 @@ package body Exp_Aggr is
Static_Components := False;
return False;
- elsif Is_Delayed_Aggregate (Expr_Q) then
+ elsif Is_Delayed_Aggregate (Expr_Q)
+ or else Is_Delayed_Conditional_Expression (Expr_Q)
+ then
Static_Components := False;
return False;