-- { dg-do run } | |
procedure Pack10 is | |
type U16 is mod 2**16; | |
type U8 is mod 2**8; | |
type R is record | |
A : U16; | |
B : U8; | |
end record; | |
type M is array (1..2) of R; | |
pragma Pack (M); | |
-- This size clause can actually be omitted | |
for M'Size use 48; | |
type R2 is record | |
C : M; | |
D : U8; | |
end record; | |
for R2 use record | |
C at 0 range 0 .. 24*2-1; | |
end record; | |
My_R2 : R2; | |
begin | |
My_R2.D := 1; | |
My_R2.C(2).B := 0; | |
if My_R2.D /=1 then | |
raise Program_Error; | |
end if; | |
end; |