| -- { dg-do run } |
| |
| procedure Rep_Clause4 is |
| |
| type U32 is mod 2 ** 32; |
| |
| type Key is record |
| Value : U32; |
| Valid : Boolean; |
| end record; |
| |
| type Key_Buffer is record |
| Current, Latch : Key; |
| end record; |
| |
| type Block is record |
| Keys : Key_Buffer; |
| Stamp : U32; |
| end record; |
| for Block use record |
| Keys at 0 range 0 .. 103; |
| Stamp at 13 range 0 .. 31; |
| end record; |
| |
| My_Block : Block; |
| My_Stamp : constant := 16#01234567#; |
| |
| begin |
| My_Block.Stamp := My_Stamp; |
| My_Block.Keys.Latch := My_Block.Keys.Current; |
| if My_Block.Stamp /= My_Stamp then |
| raise Program_Error; |
| end if; |
| end; |