From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 610E1385ED4B; Tue, 3 Sep 2024 06:08:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 610E1385ED4B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1725343711; bh=4Cpgzvtj2LqZ+DN1PdrjPEq1tFXgYHXLRFkwiBb2pTU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=w1B+U8/ZwX4EcWP4WDZdv0VyyJcVR0rVBhb717eB8LOo8mFMheRAhWjchDeCEGKN1 ak8D4BcUwYMjdgqEWEENo2iAsxRTFVH8wKKWMQe3ozVFKulLLgzyYERrYHdBllHUSy OmBuRwMQzYR7fWPtyfsF4cecZy/RdXpWZb1bRD/k= From: "pinskia at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/113682] Branches in branchless binary search rather than cmov/csel/csinc Date: Tue, 03 Sep 2024 06:08:27 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: pinskia at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- 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=3D113682 --- Comment #10 from Andrew Pinski --- (In reply to Andrew Pinski from comment #8) > This might be the path splitting running on the gimple level causing issu= es > too; see PR 112402 . Actually I was wrong. In this case it is jump threading which messes up the CFG. at `-O3 -fno-thread-jumps` on the trunk on aarch64 we get: cmp w0, 0 csinc x21, x21, x19, le csel x20, x20, x19, ge Which is exactly what we want. The jump threaded IR looks like: ``` if (_17 > 0) goto ; [59.00%] else goto ; [41.00%] [local count: 598664758]: low_19 =3D i_14 + 1; goto ; [100.00%] [local count: 416021267]: if (_17 !=3D 0) goto ; [50.00%] else goto ; [50.00%] [local count: 958878294]: # low_18 =3D PHI # high_6 =3D PHI ``` Which rtl level ifcvt does not recongize at all as something for cmov.=