From patchwork Wed Dec 20 08:20:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "juzhe.zhong@rivai.ai" X-Patchwork-Id: 181525 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp2491832dyi; Wed, 20 Dec 2023 00:21:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IG90O9BgnU/cDwXo0LV+WL7+uRP75kKqrW1rPllDNIf0NcuGrGNJHl4noNcdC70jXariwaq X-Received: by 2002:a05:622a:118b:b0:423:8180:38a7 with SMTP id m11-20020a05622a118b00b00423818038a7mr3418222qtk.22.1703060476995; Wed, 20 Dec 2023 00:21:16 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1703060476; cv=pass; d=google.com; s=arc-20160816; b=tmnPcvxlkyVoIYLH/nHhBDYU0liHEmUXMUbRG4rUIAuZw7HNJ31Vw93eGRGDrugmz9 s3XTaFMkVST0PmVlt6jI2cabYyR+h5XdSaLucVl8dQwrnBN00rYvAJAXPIpt9l7aozZa Ucg2FnOnDhNBB4XBZ4n0zon+3azVBZZcm4BUqZ//+63XPLzKbwd8svEtOtN+YF59lXI0 OzG7VhE4/yVTKFz61VGgaKD4SWM4DOaOoyTZ9kVdoWjPVfxCbrWsCfz+QU1iHCBRrsx7 /Vk+EOK7LBvNlX6o8VXi5ljX4fhg3UONG1csqtaQQtfkn0Hjlgi9LwUGdhnSoRXAyHjq FWeQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:feedback-id :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:arc-filter:dmarc-filter:delivered-to; bh=svmlRfFZNBqsBAikSY2W/4ytlm2eXvFjvBXf4H/JNH8=; fh=idvV5TQ1gmHAoU8u1GUGfjilVySOK+BR5TeZLoSouN8=; b=HI25dxn24uRLB080F0d73+z84hJ5BKA4kpCV61ERT2FFgYbUsnhVM+kwZRnsilLeAU nuy/YSd6PXHXE1Y4coSwmAL7mGhLBc6S7Lr3hC2dmQa9/2JWGf//TvOsZ0848AuQroi5 exuuXcR11bkP3K3+im0bt4I/WRd1eDM5tlwsS/ymr5fxh7buIwq7ayep5nANtOmoq0/2 EsCH6NDaPc9APZu4mWQIrjqxtpHuQYSVNx9E2cEd37Gnr+phKI+QzeB6i2HExOOz19FK 67qBkAbXAuxN7rDJu4tyDzimWijoHmqUNEkyroH2JWFYkMkXrr/cceA0pSzq5ni/VKzP Ud4w== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id bw16-20020a05622a099000b004254b77e956si4054715qtb.477.2023.12.20.00.21.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Dec 2023 00:21:16 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AF0083861840 for ; Wed, 20 Dec 2023 08:21:16 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) by sourceware.org (Postfix) with ESMTPS id 583843857437 for ; Wed, 20 Dec 2023 08:20:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 583843857437 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 583843857437 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.204.34.129 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703060453; cv=none; b=hsg304ojphTNYTOY0NgNc3E1VQnvByMT3DYJteBFyog/ddVOEC9AeB4yUT5rNWpw6Ey/p9zybpqijcq3pqh0UEhib1IoH5bVDK2FcTiKlK4BJYC093t5YUtQika7qKqdNEXqRbSXaptOmhYoODZIXFCw7m3N8ZTF7v3Jcoefmxc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703060453; c=relaxed/simple; bh=OISYBDlD3bcMCFdTXBPFutii6oEfINchYGhDO24cGWs=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=MTh0czTwROz+pxTDbwwg7bstyHf3WUW6D5daup/VH/HXe0WILRd14f6BvZDDORHZBNXRNMktZmC9Y/qFAwN8Ypla3tviZpP+UM5bkr92+ddgERtgAso0czA8JHNlEgIy9kLf6UQXkPjYz8+6QrGH3RN/sxzfmEguga7Kro6sWCA= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp73t1703060444t8h83fvq Received: from rios-cad121.hadoop.rioslab.org ( [58.60.1.9]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 20 Dec 2023 16:20:42 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: YvSUr76aNpKSGmjfS8w+7jKxom2HsQo3PNIFpZAdMba4vOmtOKX8pwRknJSxV RoZgK3Mr/tNmT9slAPIrxfO+5bqlJv2Eior90Rb+4c/1HSuAd2hMHvcEx8cStpTcW0MGdj7 hCvdPwUDXOl4Om0j1DtTGD3+b9xP2Lsfmixs/vZF1haLS7+fcMmRgYOWrtpz5Fd6jZsCcsX pQpBb1U8Yrk2np7gUyOGYQcrPkqH1YRIBUqUpZLxeiwbluKFNVaBoQcFBbTnRCMOt0vtEz/ Jt3z/nYW6+0jys9tP/pD0utO1fohWJsZFH1FWda/z2veQteNEZE6LG4dZSxCQRYV5vUA3ab oTtakb1OdFvmfewU6HgaeqZRFkcMQVmpGIdlH9FT+Uxl8gWd0TXb2Lqb1jFu6apQpqvs7Hl DA5oEDsyceN4knU1w4lpjQ== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 10497493916011500871 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: Juzhe-Zhong Subject: [Committed] RISC-V: Fix ICE of moving SUBREG of vector mode to DImode scalar register on RV32 system. Date: Wed, 20 Dec 2023 16:20:40 +0800 Message-Id: <20231220082040.2920483-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785788342958427184 X-GMAIL-MSGID: 1785788342958427184 This patch fixes following ICE on full coverage testing of RV32. Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=dynamic FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=dynamic/--param=riscv-autovec-preference=fixed-vlmax FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=m2 FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/pr89369.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/pr89369.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=m2/--param=riscv-autovec-preference=fixed-vlmax FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/pr89369.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/pr89369.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=m4 FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=m4/--param=riscv-autovec-preference=fixed-vlmax FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=m8 FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-lmul=m8/--param=riscv-autovec-preference=fixed-vlmax FAIL: gcc.c-torture/compile/930120-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/930120-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/compile/pr42196-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/bswap-1.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) Running target riscv-sim/-march=rv32gc_zve32f/-mabi=ilp32d/-mcmodel=medlow/--param=riscv-autovec-preference=fixed-vlmax FAIL: gcc.c-torture/execute/20050316-2.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-2.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O1 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O2 (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -O3 -g (internal compiler error: in emit_move_insn, at expr.cc:4606) FAIL: gcc.c-torture/execute/20050316-3.c -Os (internal compiler error: in emit_move_insn, at expr.cc:4606) These ICEs happens on: Move (subreg:DI (reg:RVVM2SI 141) 0) to (reg/v:DI 135 [ u ]) on RV32 system. Before this patch: bug.c:24:11: internal compiler error: in emit_move_insn, at expr.cc:4607 24 | r = bar (u); | ^~~~~~~ 0x12bd034 emit_move_insn(rtx_def*, rtx_def*) ../../../../gcc/gcc/expr.cc:4606 0x1c98001 riscv_legitimize_move(machine_mode, rtx_def*, rtx_def*) ../../../../gcc/gcc/config/riscv/riscv.cc:2703 0x24ed627 gen_movdi(rtx_def*, rtx_def*) ../../../../gcc/gcc/config/riscv/riscv.md:2105 0x10dca22 rtx_insn* insn_gen_fn::operator()(rtx_def*, rtx_def*) const ../../../../gcc/gcc/recog.h:441 0x12bcb01 emit_move_insn_1(rtx_def*, rtx_def*) ../../../../gcc/gcc/expr.cc:4551 0x12bd91a emit_move_insn(rtx_def*, rtx_def*) ../../../../gcc/gcc/expr.cc:4721 0x128e077 store_bit_field_1 ../../../../gcc/gcc/expmed.cc:808 0x1290016 store_bit_field(rtx_def*, poly_int<2u, unsigned long>, poly_int<2u, unsigned long>, poly_int<2u, unsigned long>, poly_int<2u, unsigned long>, machine_mode, rtx_def*, bool, bool) ../../../../gcc/gcc/expmed.cc:1194 0x12cb40b store_field ../../../../gcc/gcc/expr.cc:8230 0x12c4426 expand_assignment(tree_node*, tree_node*, bool) ../../../../gcc/gcc/expr.cc:6290 0x111032f expand_gimple_stmt_1 ../../../../gcc/gcc/cfgexpand.cc:3966 0x11106ed expand_gimple_stmt ../../../../gcc/gcc/cfgexpand.cc:4064 0x1118d72 expand_gimple_basic_block ../../../../gcc/gcc/cfgexpand.cc:6120 0x111aa2c execute ../../../../gcc/gcc/cfgexpand.cc:6855 The solution is quite simple, we just need to extract index = 1 element to the highpart of the DImode register on RV32 system since DImode register consists of 2 scalar registers. After this patch: vsetivli zero,2,e32,m2,ta,ma vle32.v v2,0(a0) vslidedown.vi v4,v2,1 vmv.x.s a0,v2 vmv.x.s a1,v4 ret Tested on full coverage testing of both RV32 and RV64 no regression. Committed as it is an obvious bug fix. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_legitimize_move): Fix ICE. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/bug-8.c: New test. --- gcc/config/riscv/riscv.cc | 24 +++++++++----- .../gcc.target/riscv/rvv/autovec/bug-8.c | 31 +++++++++++++++++++ 2 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/bug-8.c diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 8ae65760b6e..d9b45f17a1b 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -2693,14 +2693,22 @@ riscv_legitimize_move (machine_mode mode, rtx dest, rtx src) if (i == 1) { - rtx tmp = expand_binop (Pmode, ashl_optab, - gen_lowpart (Pmode, result), - gen_int_mode (32, Pmode), NULL_RTX, 0, - OPTAB_DIRECT); - rtx tmp2 = expand_binop (Pmode, ior_optab, tmp, int_reg, - NULL_RTX, 0, - OPTAB_DIRECT); - emit_move_insn (int_reg, tmp2); + if (UNITS_PER_WORD < mode_size) + /* If Pmode = SImode and mode = DImode, we just need to + extract element of index = 1 from the vector and move it + into the highpart of the DEST since DEST consists of 2 + scalar registers. */ + emit_move_insn (gen_highpart (smode, int_reg), result); + else + { + rtx tmp = expand_binop (Pmode, ashl_optab, + gen_lowpart (Pmode, result), + gen_int_mode (32, Pmode), + NULL_RTX, 0, OPTAB_DIRECT); + rtx tmp2 = expand_binop (Pmode, ior_optab, tmp, int_reg, + NULL_RTX, 0, OPTAB_DIRECT); + emit_move_insn (int_reg, tmp2); + } } } diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/bug-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/bug-8.c new file mode 100644 index 00000000000..07b7e1669fe --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/bug-8.c @@ -0,0 +1,31 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv32gc_zve32f -mabi=ilp32d -O3 --param=riscv-autovec-lmul=m2 --param=riscv-autovec-preference=fixed-vlmax" } */ + +union U +{ + double d; + __complex__ int c; +}; + +double gd; +extern double bar (union U); + +double foo (int b, double d, int c1, int c2) +{ + union U u; + double r; + + if (b) + { + u.d = d; + r = u.d; + } + else + { + __real__ u.c = c1; + __imag__ u.c = c2; + r = bar (u); + } + + return r; +}