From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id A49583858400; Mon, 25 Oct 2021 07:30:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A49583858400 From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/102920] [12 Regression] Wrong code with -O3 Date: Mon, 25 Oct 2021 07:30:28 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org X-Bugzilla-Target-Milestone: 12.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 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Oct 2021 07:30:28 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D102920 --- Comment #3 from Richard Biener --- So the "logic" is that # var_120_lsm.9_7 =3D PHI <_42(6), _29(D)(5)> # var_123_lsm.11_13 =3D PHI <_26(D)(6), _1(5)> can be considered equal since _42 and _26(D) are optimistically equal and _29(D) and _1 are optimistically equal as well. But we may only use optimistic equality when merging values on different edges, not when merging values on the same edge - in particular we may not choose the undef value on any edge when there's a not undef value as well. Hmm, we're also treating a[i][undef] and a[undef][i] as the same but there I guess both undefs are "used" and thus both expressions invoke undefined behavior. While with the PHIs we don't know which edge will be taken and thus which copy will result in undefined behavior.=