-- { dg-do compile } -- { dg-options "-gnatws" } procedure Rep_Clause3 is subtype U_16 is integer range 0..2**16-1; type TYPE1 is range 0 .. 135; for TYPE1'size use 14; type TYPE2 is range 0 .. 262_143; for TYPE2'size use 18; subtype TYPE3 is integer range 1 .. 21*6; type ARR is array (TYPE3 range <>) of boolean; pragma Pack(ARR); subtype SUB_ARR is ARR(1 .. 5*6); OBJ : SUB_ARR; type R is record N : TYPE1; L : TYPE2; I : SUB_ARR; CRC : U_16; end record; for R use record at mod 4; N at 0 range 0 .. 13; L at 0 range 14 .. 31; I at 4 range 2 .. 37; CRC at 8 range 16 .. 31; end record; for R'size use 12*8; type SUB_R is array (1..4) of R; T : SUB_R; begin if OBJ = T(1).I then raise Program_Error; end if; end;