From: Bob Duff Date: Wed, 23 Aug 2023 12:14:07 +0000 (-0400) Subject: ada: Fix crash on selected component lookup in generic instance X-Git-Tag: basepoints/gcc-15~6446 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d54e996a25d34d1cfaa5fd1de5127668bb43755a;p=thirdparty%2Fgcc.git ada: Fix crash on selected component lookup in generic instance This patch fixes a compiler crash on selected component lookup in an instance of a generic unit when the relevant type is an itype. gcc/ada/ * sem_ch4.adb (Find_Component_In_Instance): Check that Declaration_Node (Par) is not Empty, as it is for itypes. --- diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 8543f0d578bc..50ba6c9c847c 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -5212,10 +5212,14 @@ package body Sem_Ch4 is end if; end loop; - if Present (Par) and then Is_Generic_Actual_Type (Par) then - - -- Now look for component in ancestor types + -- If Par is a generic actual, look for component in ancestor types. + -- Skip this if we have no Declaration_Node, as is the case for + -- itypes. + if Present (Par) + and then Is_Generic_Actual_Type (Par) + and then Present (Declaration_Node (Par)) + then Par := Generic_Parent_Type (Declaration_Node (Par)); loop Find_Component_In_Instance (Par);