From 3e6bb105d309430c6a96caaa9c0693cad935a09a Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 4 May 2020 09:47:30 -0400 Subject: [PATCH] [Ada] Refine use of access types in unnesting gcc/ada/ * exp_unst.adb (Needs_Fat_Pointer): Don't check for formal. (Unnest_Subprogram): Use 'Unchecked_Access instead of 'Access when populating activation record. --- gcc/ada/exp_unst.adb | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb index c922300f3d4..e530a94f32e 100644 --- a/gcc/ada/exp_unst.adb +++ b/gcc/ada/exp_unst.adb @@ -251,18 +251,14 @@ package body Exp_Unst is ----------------------- function Needs_Fat_Pointer (E : Entity_Id) return Boolean is - Typ : Entity_Id; - begin - if Is_Formal (E) then - Typ := Etype (E); - if Is_Private_Type (Typ) and then Present (Full_View (Typ)) then - Typ := Full_View (Typ); - end if; + Typ : Entity_Id := Etype (E); - return Is_Array_Type (Typ) and then not Is_Constrained (Typ); - else - return False; + begin + if Is_Private_Type (Typ) and then Present (Full_View (Typ)) then + Typ := Full_View (Typ); end if; + + return Is_Array_Type (Typ) and then not Is_Constrained (Typ); end Needs_Fat_Pointer; ---------------- @@ -2084,7 +2080,7 @@ package body Exp_Unst is -- or else 'Access for unconstrained array if Needs_Fat_Pointer (Ent) then - Attr := Name_Access; + Attr := Name_Unchecked_Access; else Attr := Name_Address; end if;