From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id C39E43857B9C; Wed, 13 Mar 2024 14:07:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C39E43857B9C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1710338871; bh=1sdyjQWlgvXZZsh0nAehJTR8R/ItEI/t+ajNy1EILAM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=AVUOJKj983qiNZPypOQ4CvbeWLLC4vRgds+ZARPoqnTu+vbUwsBWwi6ukKeyhMNCs pPO6K+51Acie7lJZSxwkIdzaj3u4ERpgp4rQ+8pnVKFZ4lFbq4SKOvBB8U/0qZrN1d nVqWEfY5qU8szzpgP6qcD5zIn6j96IH0iSSE95eA= From: "hubicka at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug ipa/113907] [11/12/13/14 regression] ICU miscompiled since on x86 since r14-5109-ga291237b628f41 Date: Wed, 13 Mar 2024 14:07:48 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: ipa X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: hubicka at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P1 X-Bugzilla-Assigned-To: hubicka at gcc dot gnu.org X-Bugzilla-Target-Milestone: 14.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D113907 --- Comment #55 from Jan Hubicka --- > Anyway, can we in the spot my patch changed just walk all source->node->c= allees > cgraph_edges, for each of them find the corresponding cgraph_edge = in the alias > and for each walk all the jump_functions recorded and union = their m_vr? > Or is that something that can't be done in LTO for some reason? That was my fist idea too, but the problem is that icf has (very limited) support for matching function which differ by order of the basic blocks: it computes hash of every basic block and orders them by their hash prior comparing. This seems half-finished since i.e. order of edges in PHIs has to match exactly. Callee lists are officially randomly ordered, but practically they follows = the order of basic blocks (as they are built this way). However since BB orders can differ, just walking both callee sequences and comparing pairwise does = not work. This also makes merging the information harder, since we no longer ha= ve the BB map at the time decide to merge. It is however not hard to match the jump function while walking gimple bodi= es and comparing statements, which is backportable and localized. I am still waiting for my statistics to converge and will send it soon.=