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