diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2024-03-29 17:46:43 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2024-05-20 09:47:06 +0200 |
commit | bfa743ddc9fd1850a7cc282afe5f3101b544ac64 (patch) | |
tree | 3c174d9679bb0cf478ca16726f22bdfdfb5a83b8 /gcc | |
parent | efc7ba5f8f113565b47214d0ffdb27a6638ab8b6 (diff) | |
download | gcc-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.adb | 4 |
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; |