From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by sourceware.org (Postfix) with ESMTPS id 8C99A3858D20 for ; Sun, 21 May 2023 01:10:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8C99A3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=marvell.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=marvell.com Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34L0ww2x001794 for ; Sat, 20 May 2023 18:10:00 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=T5JWn/kFBYBRbe7tcsnSfrSsJyfVTJJu7IhXxnF9hO4=; b=DPdgPeI6opsZG8QSjHV6K78LEkeRDXqHGZQH8yBywIPeMkPdeRyyuQAaeSxfppjt78L4 y5jfYSSfc6lcvvUWmNHiu3Pq2mAPIqwzVnEAq418WIPChCttSa8gSstED8dBi3jDecQn UD04550Hon8VSqJiJnmzeXATDjUPqfOExZ4J45dpjgyhzCaa6Kzp0RsoeTElNgE8nD/T vmReKIXEn24U6HhEf1YtyTN3AJlh2sswU9YTGcaMDLXqzYGguq8DbX4NVfsBEW9Kd09B d3lTTlgY3POx+oO9ScipJ1Jhp+vkkjy/qIyXjgo5Y+F7rruVh98lcBbcUa02ZMvPfyI8 5g== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3qpwqjs50t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Sat, 20 May 2023 18:10:00 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Sat, 20 May 2023 18:09:58 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.48 via Frontend Transport; Sat, 20 May 2023 18:09:58 -0700 Received: from vpnclient.wrightpinski.org.com (unknown [10.69.242.187]) by maili.marvell.com (Postfix) with ESMTP id 17A623F709D; Sat, 20 May 2023 18:09:58 -0700 (PDT) From: Andrew Pinski To: CC: Andrew Pinski Subject: [PATCH] Fix PR 109919: ICE in emit_move_insn with some bit tests Date: Sat, 20 May 2023 18:09:49 -0700 Message-ID: <20230521010949.1957550-1-apinski@marvell.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-ORIG-GUID: j6iC1oZM67HWEP2VwRn_Yl488cNx7BKT X-Proofpoint-GUID: j6iC1oZM67HWEP2VwRn_Yl488cNx7BKT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-20_16,2023-05-17_02,2023-02-09_01 X-Spam-Status: No, score=-14.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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: The problem is I used expand_expr with the target but we don't want to use the target here as it is the wrong mode for the original expression. The testcase would ICE deap down while trying to do a move to use the target. Anyways just calling expand_expr with NULL_EXPR fixes the issue. Committed as obvious after a bootstrap/test on x86_64-linux-gnu. PR middle-end/109919 gcc/ChangeLog: * expr.cc (expand_single_bit_test): Don't use the target for expand_expr. gcc/testsuite/ChangeLog: * gcc.c-torture/compile/pr109919-1.c: New test. --- gcc/expr.cc | 2 +- gcc/testsuite/gcc.c-torture/compile/pr109919-1.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr109919-1.c diff --git a/gcc/expr.cc b/gcc/expr.cc index 2070198acda..02f24c00148 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -12956,7 +12956,7 @@ expand_single_bit_test (location_t loc, enum tree_code code, intermediate_type = ops_unsigned ? unsigned_type : signed_type; inner = fold_convert_loc (loc, intermediate_type, inner); - rtx inner0 = expand_expr (inner, target, VOIDmode, EXPAND_NORMAL); + rtx inner0 = expand_expr (inner, NULL_RTX, VOIDmode, EXPAND_NORMAL); inner0 = extract_bit_field (inner0, 1, bitnum, 1, target, operand_mode, mode, 0, NULL); diff --git a/gcc/testsuite/gcc.c-torture/compile/pr109919-1.c b/gcc/testsuite/gcc.c-torture/compile/pr109919-1.c new file mode 100644 index 00000000000..bb612a1f020 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr109919-1.c @@ -0,0 +1,9 @@ +/* { dg-options "-fno-tree-dce -fno-tree-vrp" } */ +int a; +int main() { + int b = 1; + while (a) { + short c = b && ((a || a) & (a * c)); + } + return 0; +} -- 2.31.1