-- { dg-do run }
procedure Access_Test is
   type T1 is tagged null record;
   procedure Proc_1 (P : access T1'Class)  is
      type Ref is access T1'Class;
      X : Ref := new T1'Class'(P.all);  -- Should always work (no exception)
   begin
      null;
   end;
   procedure Proc_2 is
      type T2 is new T1 with null record;
      X2 : aliased T2;
   begin
      Proc_1 (X2'access);
      declare
         type T3 is new T1 with null record;
         X3 :  aliased T3;
      begin
         Proc_1 (X3'access);
      end;
   end;
begin
   Proc_2;
end;