-- { dg-do run } -- { dg-options "-gnat12 -gnatVa" } procedure In_Out_Parameter4 is type Enum is (E_Undetermined, E_Down, E_Up); subtype Status_T is Enum range E_Down .. E_Up; function Recurse (Val : in out Integer) return Status_T is Result : Status_T; procedure Dummy (I : in out Integer) is begin null; end; begin if Val > 500 then Val := Val - 1; Result := Recurse (Val); return Result; else return E_UP; end if; end; Val : Integer := 501; S : Status_T; begin S := Recurse (Val); end;