From: Eric Botcazou Date: Tue, 31 Oct 2023 16:27:15 +0000 (+0100) Subject: ada: Fix internal error on 'Address of task component X-Git-Tag: basepoints/gcc-15~4481 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35510341fc24eed8fa3cd08171dc560b6d833fb2;p=thirdparty%2Fgcc.git ada: Fix internal error on 'Address of task component This happens when the prefix of the selected component is of an access type, i.e. there is an implicit dereference. because the prefix is not resolved. gcc/ada/ * sem_attr.adb (Resolve_Attribute) : Remove the bypass for prefixes with task type. --- diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 531bc112c918..000253e7993c 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -12119,9 +12119,7 @@ package body Sem_Attr is Note_Possible_Modification (P, Sure => False); end if; - if Nkind (P) in N_Subexpr - and then Is_Overloaded (P) - then + if Nkind (P) in N_Subexpr and then Is_Overloaded (P) then Get_First_Interp (P, Index, It); Get_Next_Interp (Index, It); @@ -12135,11 +12133,7 @@ package body Sem_Attr is if not Is_Entity_Name (P) or else not Is_Overloadable (Entity (P)) then - if not Is_Task_Type (Etype (P)) - or else Nkind (P) = N_Explicit_Dereference - then - Resolve (P); - end if; + Resolve (P); end if; -- If this is the name of a derived subprogram, or that of a