1-- { dg-do run } 2 3procedure Pack10 is 4 5 type U16 is mod 2**16; 6 type U8 is mod 2**8; 7 8 type R is record 9 A : U16; 10 B : U8; 11 end record; 12 13 type M is array (1..2) of R; 14 pragma Pack (M); 15 -- This size clause can actually be omitted 16 for M'Size use 48; 17 18 type R2 is record 19 C : M; 20 D : U8; 21 end record; 22 for R2 use record 23 C at 0 range 0 .. 24*2-1; 24 end record; 25 26 My_R2 : R2; 27 28begin 29 My_R2.D := 1; 30 My_R2.C(2).B := 0; 31 if My_R2.D /=1 then 32 raise Program_Error; 33 end if; 34end; 35