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