blob: dab3f8d52df83bd8aed90e424d7fe4db72e47fca (
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
31
32
33
34
35
36
37
38
39
40
41
42
|
-- { dg-do run }
-- { dg-options "-gnat12" }
procedure In_Out_Parameter3 is
type Arr is array (1..16) of Integer;
type Rec1 is record
A : Arr;
B : Boolean;
end record;
type Rec2 is record
R : Rec1;
end record;
pragma Pack (Rec2);
function F (I : In Out Rec1) return Boolean is
A : Integer := I.A (1);
begin
I.A (1) := I.A (1) + 1;
return (A > 0);
end;
I : Rec2 := (R => (A => (others => 0), B => True));
B : Boolean;
begin
B := F (I.R);
if B then
raise Program_Error;
end if;
if I.R.A (1) /= 1 then
raise Program_Error;
end if;
if F (I.R) = False then
raise Program_Error;
end if;
if I.R.A (1) /= 2 then
raise Program_Error;
end if;
end;
|