| -- { dg-do run } | |
| -- { dg-options "-O2" } | |
| procedure self_aggregate_with_call is | |
| type Values is array (1 .. 8) of Natural; | |
| type Vector is record | |
| Components : Values; | |
| end record; | |
| function Clone (Components: Values) return Values is | |
| begin | |
| return Components; | |
| end; | |
| procedure Process (V : in out Vector) is | |
| begin | |
| V.Components (Values'First) := 1; | |
| V := (Components => Clone (V.Components)); | |
| if V.Components (Values'First) /= 1 then | |
| raise Program_Error; | |
| end if; | |
| end; | |
| V : Vector; | |
| begin | |
| Process (V); | |
| end; |