From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 41ACA3858D35; Mon, 30 Jan 2023 14:10:51 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 41ACA3858D35 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675087851; bh=43nw3dwnGtLlf49hkSRdrmMT9kZrWhAhc5DVY/KECug=; h=From:To:Subject:Date:In-Reply-To:References:From; b=wC8CTX5H3WI3V0eX82Ta+BQBA/+CwQxc1xMgKXhaj69YdA1CBDRVthIKSLHSV3rWg 8Dx/nq6nLIRmu7HQGZXZ43+9AF9/2EYZWXav3+X8MK+BoOlGRSrCQwbQmzaByhvVjU YgJT3AgNDQqFSrEEGi0/OsC9FPYIUu8qxCyl15G0= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/108599] [12/13 Regression] Incorrect code generation newer intel architectures Date: Mon, 30 Jan 2023 14:10:50 +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: 12.1.1 X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 12.3 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=3D108599 --- Comment #5 from Jakub Jelinek --- cse2 still has correct: (insn 28 27 29 2 (set (reg:V4DI 86) (mem/u/c:V4DI (symbol_ref/u:DI ("*.LC2") [flags 0x2]) [0 S32 A256]= )) "pr108599.C":6:49 1811 {movv4di_internal} (expr_list:REG_EQUAL (const_vector:V4DI [ (const_int 16 [0x10]) repeated x2 (const_int 0 [0]) repeated x2 ]) (nil))) (insn 29 28 30 2 (set (mem/c:V4DI (plus:DI (reg/f:DI 19 frame) (const_int -32 [0xffffffffffffffe0])) [0 MEM [(void *)&D.3338]+0 S32 A256]) (reg:V4DI 86)) "pr108599.C":6:49 1811 {movv4di_internal} (expr_list:REG_DEAD (reg:V4DI 86) (nil))) ... (insn 35 33 36 2 (set (reg:OI 88 [ D.3338 ]) (mem/c:OI (plus:DI (reg/f:DI 19 frame) (const_int -32 [0xffffffffffffffe0])) [2 D.3338+0 S32 A256]= )) "pr108599.C":20:7 discrim 3 80 {*movoi_internal_avx} (nil)) (insn 36 35 37 2 (set (mem:OI (reg/f:DI 7 sp) [0 S32 A64]) (reg:OI 88 [ D.3338 ])) "pr108599.C":20:7 discrim 3 80 {*movoi_internal_avx} (expr_list:REG_DEAD (reg:OI 88 [ D.3338 ]) (nil))) But dse1 turns it into incorrect: (insn 28 27 53 2 (set (reg:V4DI 86) (mem/u/c:V4DI (symbol_ref/u:DI ("*.LC2") [flags 0x2]) [0 S32 A256]= )) "pr108599.C":6:49 1811 {movv4di_internal} (expr_list:REG_EQUAL (const_vector:V4DI [ (const_int 16 [0x10]) repeated x2 (const_int 0 [0]) repeated x2 ]) (nil))) (insn 53 28 52 2 (set (reg:DI 94) (const_int 16 [0x10])) "pr108599.C":6:49 82 {*movdi_internal} (nil)) (insn 52 53 54 2 (set (reg:V4DI 93) (vec_duplicate:V4DI (reg:DI 94))) "pr108599.C":6:49 8004 {vec_dupv4= di} (expr_list:REG_DEAD (reg:DI 94) (nil))) (insn 54 52 30 2 (set (reg:OI 92) (subreg:OI (reg:V4DI 93) 0)) "pr108599.C":6:49 80 {*movoi_internal_= avx} (expr_list:REG_DEAD (reg:V4DI 93) (expr_list:REG_EQUAL (const_wide_int 0x100000000000000010) (nil)))) ... (insn 35 33 36 2 (set (reg:OI 88 [ D.3338 ]) (reg:OI 92)) "pr108599.C":20:7 discrim 3 80 {*movoi_internal_avx} (expr_list:REG_DEAD (reg:OI 92) (nil)))=