From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id F2B4B3865C24 for ; Wed, 22 May 2024 11:25:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F2B4B3865C24 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F2B4B3865C24 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.208.246.23 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716377115; cv=none; b=VI6sYLDABqZsEIAAPgg8UhpyzqE7Z40/sDKhesif5SIqYoGMRGOjT+WGyHX5IgkX3DkDHqiPgHnMPqBeBIbRBLCGOnHx6In+D2abp24b+XHtugOYyunMqMwHVNDggVX7VdUK4Ua1twnvF9QGmPOsc70aotMbobSaHBMMtt6n+oI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716377115; c=relaxed/simple; bh=YSW0yC5dmhCiRv9RSKfYwZU09L/7obn6S333qsK6wSU=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=dgbnN8Wl8cxuc/bMXoCBHPo0mPeWd8CppwElSmr3WKBQw1Cddlmu+qY7vTsQcO533/Xum93qALKs1g80mhLACnOGUyrL5qUxxugDsD1W4jF0E4kov9aO4P8qwueOnEVCmklWPHXImlHI1YbzJU7rw89RJWian2kfbbjqpAHp/AE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1716377110; bh=YSW0yC5dmhCiRv9RSKfYwZU09L/7obn6S333qsK6wSU=; h=From:To:Cc:Subject:Date:From; b=DHK+7xbI6Z9iSqGx5JqrQinJfcSCDcStmeKAy8XiTpZQ6QWph5HsUyq8DhuDIkovA 4ZMReDoLmkUeEW6l7M6W1tFqRH3PeW696st9CN08Au/m408dA6ByHtoutaPcibb1lj cMRq5tYX0GZftKcPlIbhkbOz8dGLUP8rCELaSPlk= Received: from stargazer.. (unknown [113.200.174.121]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id A5B921A4006; Wed, 22 May 2024 07:25:08 -0400 (EDT) From: Xi Ruoyao To: gcc-patches@gcc.gnu.org Cc: chenglulu , i@xen0n.name, xuchenghua@loongson.cn, Xi Ruoyao Subject: [PATCH] LoongArch: Guard REGNO with REG_P in loongarch_expand_conditional_move [PR115169] Date: Wed, 22 May 2024 19:24:00 +0800 Message-ID: <20240522112455.39096-1-xry111@xry111.site> X-Mailer: git-send-email 2.45.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,LIKELY_SPAM_FROM,SPF_HELO_PASS,SPF_PASS,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: gcc/ChangeLog: PR target/115169 * config/loongarch/loongarch.cc (loongarch_expand_conditional_move): Guard REGNO with REG_P. --- Bootstrapped with --enable-checking=all. Ok for trunk and 14? gcc/config/loongarch/loongarch.cc | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc index e7835ae34ae..1b6df6a4365 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -5344,6 +5344,7 @@ loongarch_expand_conditional_move (rtx *operands) rtx op1_extend = op1; /* Record whether operands[2] and operands[3] modes are promoted to word_mode. */ + bool promote_op[2] = {false, false}; bool promote_p = false; machine_mode mode = GET_MODE (operands[0]); @@ -5351,9 +5352,15 @@ loongarch_expand_conditional_move (rtx *operands) loongarch_emit_float_compare (&code, &op0, &op1); else { - if ((REGNO (op0) == REGNO (operands[2]) - || (REGNO (op1) == REGNO (operands[3]) && (op1 != const0_rtx))) - && (GET_MODE_SIZE (GET_MODE (op0)) < word_mode)) + if (GET_MODE_SIZE (GET_MODE (op0)) < word_mode) + { + promote_op[0] = (REG_P (op0) && REG_P (operands[2]) && + REGNO (op0) == REGNO (operands[2])); + promote_op[1] = (REG_P (op1) && REG_P (operands[3]) && + REGNO (op1) == REGNO (operands[3])); + } + + if (promote_op[0] || promote_op[1]) { mode = word_mode; promote_p = true; @@ -5395,7 +5402,7 @@ loongarch_expand_conditional_move (rtx *operands) if (promote_p) { - if (REGNO (XEXP (operands[1], 0)) == REGNO (operands[2])) + if (promote_op[0]) op2 = op0_extend; else { @@ -5403,7 +5410,7 @@ loongarch_expand_conditional_move (rtx *operands) op2 = force_reg (mode, op2); } - if (REGNO (XEXP (operands[1], 1)) == REGNO (operands[3])) + if (promote_op[1]) op3 = op1_extend; else { -- 2.45.1