From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg150.qq.com (smtpbg150.qq.com [18.132.163.193]) by sourceware.org (Postfix) with ESMTPS id 868523858D1E for ; Sun, 5 Mar 2023 10:24:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 868523858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp91t1678011872tmrgu5z2 Received: from rios-cad5.localdomain ( [58.60.1.11]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 05 Mar 2023 18:24:31 +0800 (CST) X-QQ-SSF: 01400000002000E0M000B00A0000000 X-QQ-FEAT: mRz6/7wsmIjJmQCLClJQRJN5uWLSK0QwRXYsJHbnnCHbPERP4C/l9bUO66FAt GMU72Hnuz/f0WFpEIYgi91AH/Nlh+z7PrlAl6zbturtYRWLaE20125nccdVLfLZZuwsQG9K N0+SfaPu8zSmS8ekMOVlXXEjKLoNiVqcIscYqd2F5LV+jtWonjuE1w3xDyquqIppxuVdW7J Q9vww4q5eGWfzQAy2gLjzSCq1iRqsjdJ72iVkJfuoqqie9s6cNZx4zRQmZeyvMNEhPW4auI JS/gQ6XgMRmgvHyctFrTye+cHhNH+ecTHmKAq8ZPHkFH5c9lqgg86Iw1LCZiyXyc8iXfwl8 WnYuHN3htLsbfRS0cAKoccMhNIqOFPPu1kRrR933bF57H6c8xz+nPPoXlCdZw== X-QQ-GoodBg: 2 From: juzhe.zhong@rivai.ai To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, Ju-Zhe Zhong Subject: [PATCH] RISC-V: Fix ICE for avl_single-86/avl_single-88/avl_single-90 Date: Sun, 5 Mar 2023 18:24:30 +0800 Message-Id: <20230305102430.266375-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_NUMSUBJECT,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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: From: Ju-Zhe Zhong FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-86.c -Og -g (internal compiler error: Segmentation fault) FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-86.c -Og -g (test for excess errors) FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-88.c -Og -g (internal compiler error: Segmentation fault) FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-88.c -Og -g (test for excess errors) FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-90.c -Og -g (internal compiler error: Segmentation fault) FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-90.c -Og -g (test for excess errors) gcc/ChangeLog: * config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug. (pass_vsetvl::backward_demand_fusion): Ditto. --- gcc/config/riscv/riscv-vsetvl.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc index 9e25102a4f2..73f36a70331 100644 --- a/gcc/config/riscv/riscv-vsetvl.cc +++ b/gcc/config/riscv/riscv-vsetvl.cc @@ -1528,7 +1528,7 @@ static bool reg_available_p (const bb_info *bb, const vector_insn_info &info) { if (!info.get_avl_source ()) - return true; + return false; insn_info *insn = info.get_avl_source ()->insn (); if (insn->bb () == bb) return before_p (insn, info.get_insn ()); @@ -3040,6 +3040,12 @@ pass_vsetvl::backward_demand_fusion (void) continue; if (e->src->index == ENTRY_BLOCK_PTR_FOR_FN (cfun)->index) continue; + /* If prop is demand of vsetvl instruction and reaching doesn't demand + AVL. We don't backward propagate since vsetvl instruction has no + side effects. */ + if (vsetvl_insn_p (prop.get_insn ()->rtl ()) + && propagate_avl_across_demands_p (prop, block_info.reaching_out)) + continue; if (block_info.reaching_out.unknown_p ()) continue; -- 2.36.3