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