1-- { dg-do run } 2-- { dg-options "-gnatN" } 3 4with Text_IO; use Text_IO; 5with system; use system; 6procedure inline_tagged is 7 package Pkg is 8 type T_Inner is tagged record 9 Value : Integer; 10 end record; 11 type T_Inner_access is access all T_Inner; 12 procedure P2 (This : in T_Inner; Ptr : address); 13 pragma inline (P2); 14 type T_Outer is record 15 Inner : T_Inner_Access; 16 end record; 17 procedure P1 (This : access T_Outer); 18 end Pkg; 19 package body Pkg is 20 procedure P2 (This : in T_Inner; Ptr : address) is 21 begin 22 if this'address /= Ptr then 23 raise Program_Error; 24 end if; 25 end; 26 procedure P1 (This : access T_Outer) is 27 begin 28 P2 (This.Inner.all, This.Inner.all'Address); 29 end P1; 30 end Pkg; 31 use Pkg; 32 Thing : aliased T_Outer := (inner => new T_Inner); 33begin 34 P1 (Thing'access); 35end; 36