-- { dg-do run } with System; use System; procedure Boolean_Conv is subtype B1 is Boolean; subtype B2 is Boolean; A0, A1, A2 : Address; B : aliased B1; procedure P2 (X2 : access B2) is begin A2 := X2.all'Address; end P2; procedure P1 (X1 : access B1) is begin A1 := X1.all'Address; P2 (B2 (X1.all)'Unrestricted_Access); end P1; begin A0 := B'Address; P1 (B'Access); if A1 /= A0 then raise Program_Error; end if; if A2 /= A0 then raise Program_Error; end if; end;