| -- { dg-do run } | |
| with Interfaces; | |
| procedure Pack24 is | |
| type Enum_1 is (Lit_1); | |
| for Enum_1'SIZE use 16; | |
| type Rec1(D1 : Enum_1 := Lit_1) is | |
| record | |
| case D1 is | |
| when Lit_1 => | |
| F1 : Interfaces.Unsigned_16; | |
| when others => | |
| Null; | |
| end case; | |
| end record; | |
| pragma Pack(Rec1); | |
| type Rec2 is | |
| record | |
| F1 : Interfaces.Unsigned_16; | |
| F2 : Rec1; | |
| end record; | |
| pragma Pack(Rec2); | |
| type Rec3 is record | |
| F1 : Interfaces.Unsigned_8; | |
| F2 : Rec2; | |
| end record; | |
| pragma Pack(Rec3); | |
| begin | |
| if Rec3'Size /= 56 then | |
| raise Program_Error; | |
| end if; | |
| end; |