aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHu, Lin1 <lin1.hu@intel.com>2024-07-03 10:07:02 +0800
committerHu, Lin1 <lin1.hu@intel.com>2024-07-04 09:27:56 +0800
commitd1eeafe40f263acdb5eb1b57f777e064a11ced2b (patch)
treed82e477ef0f43607232bdf93947a903b67b21d42 /gcc
parent0720394aa9de55e45e7e0a6358b872f8203cd907 (diff)
downloadgcc-d1eeafe40f263acdb5eb1b57f777e064a11ced2b.zip
gcc-d1eeafe40f263acdb5eb1b57f777e064a11ced2b.tar.gz
gcc-d1eeafe40f263acdb5eb1b57f777e064a11ced2b.tar.bz2
vect: Fix ICE caused by missing check for TREE_CODE == SSA_NAME
Need to check if the tree's code is SSA_NAME before SSA_NAME_RANGE_INFO. 2024-07-03 Hu, Lin1 <lin1.hu@intel.com> Andrew Pinski <quic_apinski@quicinc.com> gcc/ChangeLog: PR tree-optimization/115753 * tree-vect-stmts.cc (supportable_indirect_convert_operation): Add TYPE_CODE check before SSA_NAME_RANGE_INFO. gcc/testsuite/ChangeLog: PR tree-optimization/115753 * gcc.dg/vect/pr115753-1.c: New test. * gcc.dg/vect/pr115753-2.c: Ditto. * gcc.dg/vect/pr115753-3.c: Ditto.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr115753-1.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr115753-2.c20
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr115753-3.c15
-rw-r--r--gcc/tree-vect-stmts.cc2
4 files changed, 48 insertions, 1 deletions
diff --git a/gcc/testsuite/gcc.dg/vect/pr115753-1.c b/gcc/testsuite/gcc.dg/vect/pr115753-1.c
new file mode 100644
index 0000000..2c1b6e5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr115753-1.c
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -frounding-math" } */
+/* { dg-add-options float16 } */
+/* { dg-require-effective-target float16 } */
+
+void f(_Complex _Float16*);
+void
+foo1 (_Complex _Float16 *d)
+{
+ _Complex _Float16 cf = 3967 + 3791 * 1i;
+ f(&cf);
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr115753-2.c b/gcc/testsuite/gcc.dg/vect/pr115753-2.c
new file mode 100644
index 0000000..ceacada
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr115753-2.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -frounding-math" } */
+/* { dg-add-options float16 } */
+/* { dg-require-effective-target float16 } */
+
+void f(_Float16*);
+void
+foo1 ()
+{
+ int t0 = 3967;
+ int t1 = 3969;
+ int t2 = 3971;
+ int t3 = 3973;
+ _Float16 tt[4];
+ tt[0] = t0;
+ tt[1] = t1;
+ tt[2] = t2;
+ tt[3] = t3;
+ f(&tt[0]);
+}
diff --git a/gcc/testsuite/gcc.dg/vect/pr115753-3.c b/gcc/testsuite/gcc.dg/vect/pr115753-3.c
new file mode 100644
index 0000000..8e95445
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr115753-3.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -frounding-math" } */
+
+void f(float*);
+void
+foo1 ()
+{
+ long long t0 = __LONG_LONG_MAX__;
+ long long t1 = __LONG_LONG_MAX__ - 1;
+ float tt[2];
+ tt[0] = t0;
+ tt[1] = t1;
+ f(&tt[0]);
+}
+
diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
index 156c11f..fdcda0d 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -14680,7 +14680,7 @@ supportable_indirect_convert_operation (code_helper code,
In the future, if it is supported, changes may need to be made
to this part, such as checking the RANGE of each element
in the vector. */
- if (!SSA_NAME_RANGE_INFO (op0)
+ if ((TREE_CODE (op0) == SSA_NAME && !SSA_NAME_RANGE_INFO (op0))
|| !vect_get_range_info (op0, &op_min_value, &op_max_value))
break;