entity e is end entity;
architecture a of e is
  -- type type_t is range integer'low to integer'high; -- Unlimited range works fine
  type type_t is range 0 to integer'high; -- Limited range triggers CONSTRAINT_ERROR
  procedure p1(variable t :in    type_t) is begin             end procedure;
  procedure p2(variable t :  out type_t) is begin t :=     1; end procedure;
  procedure p3(variable t :inout type_t) is begin t := t + 1; end procedure;
begin
  process
    variable n :natural := 12;
  begin
    p1(        t  => type_t(n)); -- CONSTRAINT_ERROR
    p2(integer(t) =>        n );
    p3(integer(t) => type_t(n)); -- CONSTRAINT_ERROR
    wait;
  end process;
end architecture;