1-- { dg-do run } 2 3procedure Rep_Clause4 is 4 5 type U32 is mod 2 ** 32; 6 7 type Key is record 8 Value : U32; 9 Valid : Boolean; 10 end record; 11 12 type Key_Buffer is record 13 Current, Latch : Key; 14 end record; 15 16 type Block is record 17 Keys : Key_Buffer; 18 Stamp : U32; 19 end record; 20 for Block use record 21 Keys at 0 range 0 .. 103; 22 Stamp at 13 range 0 .. 31; 23 end record; 24 25 My_Block : Block; 26 My_Stamp : constant := 16#01234567#; 27 28begin 29 My_Block.Stamp := My_Stamp; 30 My_Block.Keys.Latch := My_Block.Keys.Current; 31 if My_Block.Stamp /= My_Stamp then 32 raise Program_Error; 33 end if; 34end; 35