From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 30A173858D32; Mon, 17 Oct 2022 11:09:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 30A173858D32 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666004997; bh=A8dKsCaB8w3OfT38cteCJ26HEZ54ez3CI+ghuX5q7YM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=r2lWnsiPm9yk300hc7R+b2nc1HgNNIjc0IsX14IenbQK2+UOCkEN4uk/4byFtoVoi NkQfRwaMxBRj/DnVgXl/zHDKPAwZlsrj0ExnyNTn/pxnfIDS78dcM9s8RllRKW6Rnt a8XZWAxnlY1I5YpkaTvpicVcqaUKt7jx38u7X1WM= From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/107257] [13 Regression] Wrong code at -O2 on x86_64-linux-gnu since r13-857-gf1652e3343b1ec47 Date: Mon, 17 Oct 2022 11:09:55 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P1 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 13.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=3D107257 --- Comment #6 from Richard Biener --- With -fno-tree-slp-vectorize the failure goes away. diff in optimized: __attribute__((noipa, noinline, noclone, no_icf)) void q () { - [local count: 1073742492]: - MEM [(int *)&d] =3D 18380021091030725580; + int b_lsm.15; + int f; + _Bool _5; + + [local count: 1073741824]: + MEM [(int *)&d] =3D { -15535156, -15535156 }; d[2] =3D -15535156; + + [local count: 8687551919]: + # f_30 =3D PHI + if (f_30 =3D=3D 0) + goto ; [1.43%] + else + goto ; [98.57%] + + [local count: 4698759900]: + if (f_30 !=3D 2) + goto ; [79.66%] + else + goto ; [20.34%] + + [local count: 7731921808]: + # f_25 =3D PHI <2(4), 1(3)> + goto ; [100.00%] + + [local count: 1073742492]: a =3D 2; - b =3D -1; + _5 =3D f_30 =3D=3D 0; + b_lsm.15_33 =3D _5 ? 2 : -1; + b =3D b_lsm.15_33; return; } both variants look OK so instead RTL expansion looks fishy(?) ;; b =3D b_lsm.15_33; (insn 28 26 29 (parallel [ (set (reg:CCC 17 flags) (ne:CCC (reg/v:SI 83 [ f ]) (const_int 0 [0]))) (set (reg:SI 89) (neg:SI (reg/v:SI 83 [ f ]))) ]) -1 (nil)) (insn 29 28 30 (parallel [ (set (reg:SI 90) (neg:SI (ltu:SI (reg:CCC 17 flags) (const_int 0 [0])))) (clobber (reg:CC 17 flags)) ]) -1 (nil)) (insn 30 29 31 (parallel [ (set (reg:SI 90) (ior:SI (reg:SI 90) (const_int 2 [0x2]))) (clobber (reg:CC 17 flags)) ]) -1 (nil)) (insn 31 30 32 (set (reg:SI 88 [ b_lsm.15 ]) (reg:SI 90)) -1 (nil)) (insn 32 31 0 (set (mem/c:SI (symbol_ref:DI ("b") [flags 0x2] ) [1 b+0 S4 A32]) (reg:SI 88 [ b_lsm.15 ])) -1 (nil)) and we eventually optimize this to q: .LFB2: .cfi_startproc movq .LC0(%rip), %rax movl $-15535156, d+8(%rip) movl $2, a(%rip) movq %rax, d(%rip) movl $2, b(%rip) ret=