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

commit r15-9770-ga871b236c17b818baa7437a313793058110e70f3
Author: Gary Dismukes <dismu...@adacore.com>
Date:   Sat Jan 18 01:11:12 2025 +0000

    ada: Error about assignment to limited target on aggregate with "for of" 
iterator
    
    The compiler reports a spurious error about an assignment to a limited
    object on an aggregate of a array type with limited components that has
    an association with a "for of" iterator. This is fixed by arranging to
    have the Assignment_OK flag set on the indexed_names generated by the
    expander for initializing the aggregate object.
    
    gcc/ada/ChangeLog:
    
            * exp_aggr.adb (Two_Pass_Aggregate_Expansion): Change call to 
Make_Assignment
            for the indexed aggregate object to call Change_Make_OK_Assignment 
instead.

Diff:
---
 gcc/ada/exp_aggr.adb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 7cb26ce1af51..3c4576df3b83 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -5749,7 +5749,7 @@ package body Exp_Aggr is
          while Present (Assoc) loop
             Iter := Iterator_Specification (Assoc);
             Iter_Id := Defining_Identifier (Iter);
-            New_Comp := Make_Assignment_Statement (Loc,
+            New_Comp := Make_OK_Assignment_Statement (Loc,
                Name =>
                  Make_Indexed_Component (Loc,
                     Prefix => New_Occurrence_Of (TmpE, Loc),

Reply via email to