From: Piotr Trojanek Date: Mon, 3 Apr 2023 14:54:39 +0000 (+0200) Subject: ada: Restore parent link for both lists and nodes in class-wide condition X-Git-Tag: basepoints/gcc-15~8813 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f691c62b5fee61f72352dac324c3fef57cc8511;p=thirdparty%2Fgcc.git ada: Restore parent link for both lists and nodes in class-wide condition When preanalysing class-wide conditions, we restore "Function (Object)" to its original "Object.Function" notation. This requires the Parent links to be fixed. We did it for nodes; now we do it for lists as well. This patch is enough to fix assertion failure in CCG and to make the tree well-connected. Perhaps there is a more elegant solution, but that remains to be investigated. gcc/ada/ * contracts.adb (Fix_Parent): Fir part both for lists and nodes. --- diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb index 65f341abc8f2..15b65ee4c062 100644 --- a/gcc/ada/contracts.adb +++ b/gcc/ada/contracts.adb @@ -4936,9 +4936,11 @@ package body Contracts is begin if Par /= Parent_Node then - pragma Assert (not Is_List_Member (Node) - or else Nkind (Par) = N_Function_Call); - Set_Parent (Node, Parent_Node); + if Is_List_Member (Node) then + Set_List_Parent (List_Containing (Node), Parent_Node); + else + Set_Parent (Node, Parent_Node); + end if; end if; return OK;