From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) by sourceware.org (Postfix) with ESMTPS id 8147D385E838 for ; Fri, 24 May 2024 11:48:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8147D385E838 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=iscas.ac.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8147D385E838 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716551331; cv=none; b=dVqDsOPMo84lGTbRvm/ONHZ7wEK2gwZFTWb3M2HMErDRbOYPpWtB70LWvTRr3b8sNp8dRScDm9a0P3gDYkQJ68gc2HngqNPVduRSkrAiZCf8pzK37B2XUv/q2ZHEp9wgOsGCvd+RSI0GvNLe8orv5+jsmEl5JeFb9vtUnZ3VMss= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716551331; c=relaxed/simple; bh=t7G6gChG7i8cu47E7cIxX1EHEAJF0Z60NeNoYq4IMjo=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=HrYStOqnI5/9HMm4a8r/LPsRbusu7KzeboaUI8kEQGyyCRJ8CQ88fJ+AflBEIEmfuHjx05yc2XYX+TwvPac7M2pLULuf4EwHx73DZzGnlg3+axwwXaRR4BLDOHqR3m7StjQwntly9i/WKFNU7VNyO5vM1+Hk1269PJ6ONdxjei8= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost.localdomain (unknown [120.24.37.138]) by APP-01 (Coremail) with SMTP id qwCowADn75uXflBmhIMkBw--.10626S2; Fri, 24 May 2024 19:48:40 +0800 (CST) From: Jiawei To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, jlaw@ventanamicro.com, Jiawei Subject: [PATCH] tree-ssa-pre.c/1071140(ICE in find_or_generate_expression, at tree-ssa-pre.c:2780): Return NULL_TREE if no equal. Date: Fri, 24 May 2024 19:48:26 +0800 Message-Id: <20240524114826.1453659-1-jiawei@iscas.ac.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:qwCowADn75uXflBmhIMkBw--.10626S2 X-Coremail-Antispam: 1UD129KBjvJXoWxAFyrKrW7CF4rXF4kCr17ZFb_yoW5Cw4xpw 48Gry7trW8tF4ftFWftr47XFZxCan3Wa43Ca42krn0yF4DX34Sv34jvFy7ta45CFWYgF4a ya1j9a4v9w1ktw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUyv14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26r1I6r4UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4j 6F4UM28EF7xvwVC2z280aVAFwI0_Cr1j6rxdM28EF7xvwVC2z280aVCY1x0267AKxVW0oV Cq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0 I7IYx2IY67AKxVWUXVWUAwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r 4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCF04k20xvY0x0EwIxG rwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4 vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IY x2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26c xKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAF wI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7VUb3rc3UUUUU== X-Originating-IP: [120.24.37.138] X-CM-SenderInfo: 5mld4v3l6l2u1dvotugofq/1tbiCQ8HAGZQfKkGpAAAsA X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_SHORT,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: An ICE bug reported in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071140. https://godbolt.org/z/WE9aGYvoo Return NULL_TREE when TREE_CODE(op) not equal to SSA_NAME. gcc/ChangeLog: * tree-ssa-pre.cc (find_or_generate_expression): Remove assert. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/vsetvl/pr1071140.c: New test. --- .../gcc.target/riscv/rvv/vsetvl/pr1071140.c | 52 +++++++++++++++++++ gcc/tree-ssa-pre.cc | 4 +- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr1071140.c diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr1071140.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr1071140.c new file mode 100644 index 00000000000..4f0815e099f --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr1071140.c @@ -0,0 +1,52 @@ +/* { dg-do compile } */ +/* { dg-options "-mrvv-vector-bits=scalable -march=rv64gcv -mabi=lp64d -O3 -w" } */ + +#include + +static inline __attribute__(()) int vaddq_f32(); +static inline __attribute__(()) int vload_tillz_f32(int nlane) { + vint32m1_t __trans_tmp_9; + { + int __trans_tmp_0 = nlane; + { + vint64m1_t __trans_tmp_1; + vint64m1_t __trans_tmp_2; + vint64m1_t __trans_tmp_3; + vint64m1_t __trans_tmp_4; + if (__trans_tmp_0 == 1) { + { + __trans_tmp_3 = + __riscv_vslideup_vx_i64m1(__trans_tmp_1, __trans_tmp_2, 1, 2); + } + __trans_tmp_4 = __trans_tmp_2; + } + __trans_tmp_4 = __trans_tmp_3; + __trans_tmp_9 = __riscv_vreinterpret_v_i64m1_i32m1(__trans_tmp_3); + } + } + return vaddq_f32(__trans_tmp_9); /* { dg-error {RVV type 'vint32m1_t' cannot be passed to an unprototyped function} } */ +} + +char CFLOAT_add_args[3]; +const int *CFLOAT_add_steps; +const int CFLOAT_steps; + +__attribute__(()) void CFLOAT_add() { + char *b_src0 = &CFLOAT_add_args[0], *b_src1 = &CFLOAT_add_args[1], + *b_dst = &CFLOAT_add_args[2]; + const float *src1 = (float *)b_src1; + float *dst = (float *)b_dst; + const int ssrc1 = CFLOAT_add_steps[1] / sizeof(float); + const int sdst = CFLOAT_add_steps[2] / sizeof(float); + const int hstep = 4 / 2; + vfloat32m1x2_t a; + int len = 255; + for (; len > 0; len -= hstep, src1 += 4, dst += 4) { + int b = vload_tillz_f32(len); + int r = vaddq_f32(a.__val[0], b); /* { dg-error {RVV type '__rvv_float32m1_t' cannot be passed to an unprototyped function} } */ + } + for (; len > 0; --len, b_src0 += CFLOAT_steps, + b_src1 += CFLOAT_add_steps[1], b_dst += CFLOAT_add_steps[2]) + ; +} + diff --git a/gcc/tree-ssa-pre.cc b/gcc/tree-ssa-pre.cc index 75217f5cde1..e3d9c47f96b 100644 --- a/gcc/tree-ssa-pre.cc +++ b/gcc/tree-ssa-pre.cc @@ -2777,7 +2777,9 @@ find_or_generate_expression (basic_block block, tree op, gimple_seq *stmts) if (is_gimple_min_invariant (op)) return op; - gcc_assert (TREE_CODE (op) == SSA_NAME); + if (TREE_CODE (op) != SSA_NAME) + return NULL_TREE; + vn_ssa_aux_t info = VN_INFO (op); unsigned int lookfor = info->value_id; if (value_id_constant_p (lookfor)) -- 2.25.1