-- { dg-do run } procedure mutable1 is type Object (Valid : Boolean := False) is record case Valid is when True => Stamp : Natural; when False => null; end case; end record; function Dummy_Object (Should_Be_There : Boolean) Return Object is begin if not Should_Be_There then raise Program_Error; end if; return Object'(Valid => False); end; procedure Check (Create_Dummy : Boolean) is B : Boolean; begin B := Create_Dummy and then Dummy_Object (Create_Dummy).Valid; end; begin Check (Create_Dummy => False); Check (Create_Dummy => True); end;