1-- { dg-do compile }
2
3pragma Implicit_Packing;
4
5package Rep_Clause5 is
6
7   type Modes_Type is (Mode_0, Mode_1);
8   for  Modes_Type'size use 8;
9
10   type Mode_Record_Type is
11      record
12         Mode_1 : aliased Modes_Type;
13         Mode_2 : aliased Modes_Type;
14         Mode_3 : aliased Modes_Type;
15         Mode_4 : aliased Modes_Type;
16         Time   : aliased Float;
17      end record;
18
19   for Mode_Record_Type use
20      record
21         Mode_1 at 00 range 00 .. 07;
22         Mode_2 at 01 range 00 .. 07;
23         Mode_3 at 02 range 00 .. 07;
24         Mode_4 at 03 range 00 .. 07;
25         Time   at 04 range 00 .. 31;
26      end record;
27
28   for Mode_Record_Type'Size use 64;
29   for Mode_Record_Type'Alignment use 4;
30
31   type Array_1_Type is array (0 .. 31) of Boolean;
32   for  Array_1_Type'size use 32;
33
34   type Array_2_Type is array (0 .. 127) of Boolean;
35   for  Array_2_Type'size use 128;
36
37   type Array_3_Type is array (0 .. 31) of Boolean;
38   for  Array_3_Type'size use 32;
39
40   type Unsigned_Long is mod 2 ** 32;
41   type Array_4_Type is array (1 .. 6) of unsigned_Long;
42
43   type Primary_Data_Type is
44      record
45         Array_1           : aliased Array_1_Type;
46         Mode_Record       : aliased Mode_Record_Type;
47         Array_2           : aliased Array_2_Type;
48         Array_3           : Array_3_Type;
49         Array_4           : Array_4_Type;
50      end record;
51
52   for Primary_Data_Type use
53      record
54         Array_1           at  0 range  0 ..  31; -- WORD 1
55         Mode_Record       at  4 range  0 ..  63; -- WORD 2 ..  3
56         Array_2           at 12 range  0 .. 127; -- WORD 4 ..  7
57         Array_3           at 28 range  0 ..  31; -- WORD 8
58         Array_4           at 32 range  0 .. 191; -- WORD 9 .. 14
59      end record;
60
61   for Primary_Data_Type'Size use 448;
62
63   type Results_Record_Type is
64      record
65        Thirty_Two_Bit_Pad : Float;
66        Result             : Primary_Data_Type;
67      end record;
68
69   for Results_Record_Type use
70      record
71         Thirty_Two_Bit_Pad at 0 range 0 ..  31;
72         Result             at 4 range 0 .. 447;
73      end record;
74
75end Rep_Clause5;
76