https://gcc.gnu.org/g:bfa743ddc9fd1850a7cc282afe5f3101b544ac64

commit r15-687-gbfa743ddc9fd1850a7cc282afe5f3101b544ac64
Author: Eric Botcazou <ebotca...@adacore.com>
Date:   Fri Mar 29 17:46:43 2024 +0100

    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.

Diff:
---
 gcc/ada/exp_aggr.adb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index a386aa85ae43..796b0f1e0de1 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;

Reply via email to