summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg/self_aggregate_with_call.adb
blob: 4979bd4fc0220119a8e53e85caaa22e63018857d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-- { 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;