39 lines
891 B
Ada
39 lines
891 B
Ada
-- { 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;
|