-- { 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; |