-- { dg-do compile }

procedure loop_bound is
   package P is
      type Base is new Integer;
      Limit : constant Base := 10;
      type Index is private;
      generic package Gen is end;
   private 
      type Index is new Base range 0 .. Limit;
   end P;  
   package body P is
      package body Gen is
         type Table is array (Index) of Integer;
         procedure Init (X : in out Table) is
         begin   
            for I in 1..Index'last -1 loop 
               X (I) := -1;
            end loop;
         end Init;
      end Gen;
   end P;  
   package Inst is new P.Gen;
begin   
   null;   
end;