| -- { 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; |