2016-11-21 Thomas Preud'homme <thomas.preudhomme@arm.com>
[official-gcc.git] / gcc / testsuite / gnat.dg / specs / rep_clause5.ads
blobffac17b3c29a5f28d2c1c59f2d11912805595fd8
1 -- { dg-do compile }
3 pragma Implicit_Packing;
5 package Rep_Clause5 is
7 type Modes_Type is (Mode_0, Mode_1);
8 for Modes_Type'size use 8;
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;
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;
28 for Mode_Record_Type'Size use 64;
29 for Mode_Record_Type'Alignment use 4;
31 type Array_1_Type is array (0 .. 31) of Boolean;
32 for Array_1_Type'size use 32;
34 type Array_2_Type is array (0 .. 127) of Boolean;
35 for Array_2_Type'size use 128;
37 type Array_3_Type is array (0 .. 31) of Boolean;
38 for Array_3_Type'size use 32;
40 type Unsigned_Long is mod 2 ** 32;
41 type Array_4_Type is array (1 .. 6) of unsigned_Long;
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;
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;
61 for Primary_Data_Type'Size use 448;
63 type Results_Record_Type is
64 record
65 Thirty_Two_Bit_Pad : Float;
66 Result : Primary_Data_Type;
67 end record;
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;
75 end Rep_Clause5;