From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 9337A3858CDA; Tue, 27 Sep 2022 09:20:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9337A3858CDA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1664270431; bh=ardkfBfPYQIAGclWX0W3EOqCUMzTJVcybtAxpqZwoJU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=lCeoM0CuvrgHhoEednCWtxDR9d/4/Dkrhr+kskSp4AIgXU+Ofomw6QcrZAeqqRmM+ rCoxuGxaxLVJOjbrULXCPZCE6HoYjV1rGsseikR2qnWgZP5Zlwkhtwyv3BafXXfJCl 2qU2Vml7xF41FWv5tdnc0q1s/vFivG09Hrem4k3M= From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/107050] duplicate load of return value when facing multiple branches Date: Tue, 27 Sep 2022 09:20:31 +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: 12.1.0 X-Bugzilla-Keywords: missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth 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: everconfirmed cc cf_reconfirmed_on cf_known_to_fail cf_gcctarget keywords bug_status 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=3D107050 Richard Biener changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 CC| |segher at gcc dot gnu.org Last reconfirmed| |2022-09-27 Known to fail| |13.0 Target| |x86_64-*-* Keywords| |missed-optimization Status|UNCONFIRMED |NEW --- Comment #1 from Richard Biener --- Confirmed. It's shrink-wrapping which is duplicating blocks and the load.= =20 Before we have 1: NOTE_INSN_DELETED 5: NOTE_INSN_BASIC_BLOCK 2 2: ax:SI=3Ddi:SI 4: NOTE_INSN_FUNCTION_BEG 7: flags:CCZ=3Dcmp(ax:SI,0) 8: pc=3D{(flags:CCZ=3D=3D0)?L27:pc} REG_BR_PROB 536870916 9: NOTE_INSN_BASIC_BLOCK 3 10: ax:SI=3D[`f'] 11: flags:CCZ=3Dcmp(ax:SI,0) 12: pc=3D{(flags:CCZ=3D=3D0)?L24:pc} REG_BR_PROB 708669604 13: NOTE_INSN_BASIC_BLOCK 4 14: flags:CCZ=3Dcmp(si:SI,0) 15: pc=3D{(flags:CCZ=3D=3D0)?L19:pc} REG_BR_PROB 719407028 16: NOTE_INSN_BASIC_BLOCK 5 17: ax:QI=3D0 18: call [`func_58'] argc:0 REG_EH_REGION 0 19: L19: 20: NOTE_INSN_BASIC_BLOCK 6 21: ax:SI=3D[`g_286'] 38: pc=3DL27 39: barrier 24: L24: 25: NOTE_INSN_BASIC_BLOCK 7 26: [`g_286']=3D0 27: L27: 28: NOTE_INSN_BASIC_BLOCK 8 34: use ax:SI 40: NOTE_INSN_DELETED maybe shrink-wrapping should consider splitting blocks before doing the transform?=