-- { dg-do run } procedure Outer_Agg_Bitfield_Constructor is type Mod_64 is mod 2 ** 64; for Mod_64'Size use 64; type Uint_16 is range 0 .. 2 ** 16 - 1; for Uint_16'Size use 16; type Values_Type is record M64 : Mod_64; U16 : Uint_16; end record; for Values_Type use record M64 at 0 range 0 .. 63; U16 at 8 range 0 .. 15; end record; type Wrapper_Type is record Values : Values_Type; end record; for Wrapper_Type use record Values at 0 range 0 .. 79; end record; M : constant := 2; U : constant := 4; W : Wrapper_Type := (Values => (M, U)); procedure Check (O : Wrapper_Type) is begin if O.Values.M64 /= M or else O.Values.U16 /= U then raise Program_Error; end if; end; begin Check (W); end;