From 5b48ea9dacdae9edae491d72b5db8864109a48a1 Mon Sep 17 00:00:00 2001 From: Justin Squirek Date: Tue, 22 Dec 2020 09:58:43 -0500 Subject: [Ada] Spurious accessibility error on call in return statement gcc/ada/ * sem_util.adb (In_Return_Value): Modified to detect when implicit dereference is specified on the return type of a function call within the expression being checked. --- gcc/ada/sem_util.adb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'gcc') diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index c4fe191..7b24a40 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -14329,6 +14329,17 @@ package body Sem_Util is when N_Function_Call => if not In_Function_Call then In_Function_Call := True; + + -- When the function return type has implicit dereference + -- specified we know it cannot directly contribute to the + -- return value. + + if Present (Etype (Par)) + and then Has_Implicit_Dereference + (Get_Full_View (Etype (Par))) + then + return False; + end if; else return False; end if; -- cgit v1.1