From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id ECA353858005 for ; Wed, 1 Feb 2023 09:55:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org ECA353858005 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B91222F4 for ; Wed, 1 Feb 2023 01:56:13 -0800 (PST) Received: from localhost (e121540-lin.manchester.arm.com [10.32.99.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4B06A3F882 for ; Wed, 1 Feb 2023 01:55:31 -0800 (PST) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com Subject: [pushed] compare-elim: Fix an RTL checking failure Date: Wed, 01 Feb 2023 09:55:30 +0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-36.3 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: find_flags_uses_in_insn used SET_SRC without first checking for a SET. This showed up as an RTL checking failure in g++.dg/torture/pr90994.C on aarch64. Tested on aarch64-linux-gnu & pushed as obvious. Richard gcc/ * compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC. --- gcc/compare-elim.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/compare-elim.cc b/gcc/compare-elim.cc index 5cbd2c027b1..c59dc0cf5a5 100644 --- a/gcc/compare-elim.cc +++ b/gcc/compare-elim.cc @@ -254,7 +254,8 @@ find_flags_uses_in_insn (struct comparison *cmp, rtx_insn *insn) x = PATTERN (insn); if (GET_CODE (x) == PARALLEL) x = XVECEXP (x, 0, 0); - x = SET_SRC (x); + if (GET_CODE (x) == SET) + x = SET_SRC (x); if (GET_CODE (x) == IF_THEN_ELSE) x = XEXP (x, 0); if (COMPARISON_P (x) -- 2.25.1