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