| -- { dg-do compile } |
| |
| pragma Implicit_Packing; |
| |
| package Rep_Clause5 is |
| |
| type Modes_Type is (Mode_0, Mode_1); |
| for Modes_Type'size use 8; |
| |
| type Mode_Record_Type is |
| record |
| Mode_1 : aliased Modes_Type; |
| Mode_2 : aliased Modes_Type; |
| Mode_3 : aliased Modes_Type; |
| Mode_4 : aliased Modes_Type; |
| Time : aliased Float; |
| end record; |
| |
| for Mode_Record_Type use |
| record |
| Mode_1 at 00 range 00 .. 07; |
| Mode_2 at 01 range 00 .. 07; |
| Mode_3 at 02 range 00 .. 07; |
| Mode_4 at 03 range 00 .. 07; |
| Time at 04 range 00 .. 31; |
| end record; |
| |
| for Mode_Record_Type'Size use 64; |
| for Mode_Record_Type'Alignment use 4; |
| |
| type Array_1_Type is array (0 .. 31) of Boolean; |
| for Array_1_Type'size use 32; |
| |
| type Array_2_Type is array (0 .. 127) of Boolean; |
| for Array_2_Type'size use 128; |
| for Array_2_Type'Alignment use 4; |
| |
| type Array_3_Type is array (0 .. 31) of Boolean; |
| for Array_3_Type'size use 32; |
| |
| type Unsigned_Long is mod 2 ** 32; |
| type Array_4_Type is array (1 .. 6) of unsigned_Long; |
| |
| type Primary_Data_Type is |
| record |
| Array_1 : aliased Array_1_Type; |
| Mode_Record : aliased Mode_Record_Type; |
| Array_2 : aliased Array_2_Type; |
| Array_3 : Array_3_Type; |
| Array_4 : Array_4_Type; |
| end record; |
| |
| for Primary_Data_Type use |
| record |
| Array_1 at 0 range 0 .. 31; -- WORD 1 |
| Mode_Record at 4 range 0 .. 63; -- WORD 2 .. 3 |
| Array_2 at 12 range 0 .. 127; -- WORD 4 .. 7 |
| Array_3 at 28 range 0 .. 31; -- WORD 8 |
| Array_4 at 32 range 0 .. 191; -- WORD 9 .. 14 |
| end record; |
| |
| for Primary_Data_Type'Size use 448; |
| |
| type Results_Record_Type is |
| record |
| Thirty_Two_Bit_Pad : Float; |
| Result : Primary_Data_Type; |
| end record; |
| |
| for Results_Record_Type use |
| record |
| Thirty_Two_Bit_Pad at 0 range 0 .. 31; |
| Result at 4 range 0 .. 447; |
| end record; |
| |
| end Rep_Clause5; |