From: Justin Squirek Date: Mon, 12 Feb 2024 15:50:24 +0000 (+0000) Subject: ada: Spurious unreferenced warning on selected component X-Git-Tag: basepoints/gcc-16~9097 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=416e572edb0cbc84081de5a1932be7a2138a529a;p=thirdparty%2Fgcc.git ada: Spurious unreferenced warning on selected component This patch fixes an error in the compiler whereby a selected component on the left hand side of an assignment statement may not get marked as referenced - leading to spurious unreferenced warnings on such objects. gcc/ada/ * sem_util.adb (Set_Referenced_Modified): Use Original_Node to avoid recursive calls on expanded / internal objects such that source nodes get appropriately marked as referenced. --- diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index b5c33638b35..4e1258e7cec 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -27625,7 +27625,11 @@ package body Sem_Util is -- Deal with indexed or selected component where prefix is modified if Nkind (N) in N_Indexed_Component | N_Selected_Component then - Pref := Prefix (N); + + -- Grab the original node to avoid looking at internally generated + -- objects. + + Pref := Original_Node (Prefix (N)); -- If prefix is access type, then it is the designated object that is -- being modified, which means we have no entity to set the flag on.