| -- { dg-do run } |
| |
| procedure Pack17 is |
| |
| type Bitmap_T is array (Natural range <>) of Boolean; |
| pragma Pack (Bitmap_T); |
| |
| type Uint8 is range 0 .. 2 ** 8 - 1; |
| for Uint8'Size use 8; |
| |
| type Record_With_QImode_Variants (D : Boolean) is record |
| C_Filler : Bitmap_T (1..7); |
| C_Map : Bitmap_T (1..3); |
| case D is |
| when False => |
| F_Bit : Boolean; |
| F_Filler : Bitmap_T (1..7); |
| when True => |
| T_Int : Uint8; |
| end case; |
| end record; |
| pragma Pack (Record_With_QImode_Variants); |
| |
| procedure Fill (R : out Record_With_QImode_Variants) is |
| begin |
| R.C_Filler := (True, False, True, False, True, False, True); |
| R.C_Map := (True, False, True); |
| R.T_Int := 17; |
| end; |
| |
| RT : Record_With_QImode_Variants (D => True); |
| |
| begin |
| Fill (RT); |
| if RT.T_Int /= 17 then |
| raise Program_Error; |
| end if; |
| end; |