diff mbox series

vect: Fix ICE caused by missing check for TREE_CODE == SSA_NAME

Message ID 20240703084220.686122-1-lin1.hu@intel.com
State New
Headers show
Series vect: Fix ICE caused by missing check for TREE_CODE == SSA_NAME | expand

Commit Message

Hu, Lin1 July 3, 2024, 8:42 a.m. UTC
Hi, all

I forgot to check if the tree's code is SSA_NAME. Have modified.

Bootstrapped and regtested on {x86-64, aarch64}-linux-gnu, OK for trunk?

BRs,
Lin

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.
---
 gcc/testsuite/gcc.dg/vect/pr115753-1.c | 12 ++++++++++++
 gcc/testsuite/gcc.dg/vect/pr115753-2.c | 20 ++++++++++++++++++++
 gcc/testsuite/gcc.dg/vect/pr115753-3.c | 15 +++++++++++++++
 gcc/tree-vect-stmts.cc                 |  2 +-
 4 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.dg/vect/pr115753-1.c
 create mode 100644 gcc/testsuite/gcc.dg/vect/pr115753-2.c
 create mode 100644 gcc/testsuite/gcc.dg/vect/pr115753-3.c

Comments

Richard Biener July 3, 2024, 9:08 a.m. UTC | #1
On Wed, 3 Jul 2024, Hu, Lin1 wrote:

> Hi, all
> 
> I forgot to check if the tree's code is SSA_NAME. Have modified.
> 
> Bootstrapped and regtested on {x86-64, aarch64}-linux-gnu, OK for trunk?

OK.

Thanks,
Richard.

> BRs,
> Lin
> 
> 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.
> ---
>  gcc/testsuite/gcc.dg/vect/pr115753-1.c | 12 ++++++++++++
>  gcc/testsuite/gcc.dg/vect/pr115753-2.c | 20 ++++++++++++++++++++
>  gcc/testsuite/gcc.dg/vect/pr115753-3.c | 15 +++++++++++++++
>  gcc/tree-vect-stmts.cc                 |  2 +-
>  4 files changed, 48 insertions(+), 1 deletion(-)
>  create mode 100644 gcc/testsuite/gcc.dg/vect/pr115753-1.c
>  create mode 100644 gcc/testsuite/gcc.dg/vect/pr115753-2.c
>  create mode 100644 gcc/testsuite/gcc.dg/vect/pr115753-3.c
> 
> 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 00000000000..2c1b6e5df63
> --- /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 00000000000..ceacada2a76
> --- /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 00000000000..8e95445897c
> --- /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 20b84515446..b4f346ee6ab 100644
> --- a/gcc/tree-vect-stmts.cc
> +++ b/gcc/tree-vect-stmts.cc
> @@ -14678,7 +14678,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;
>  
>
diff mbox series

Patch

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 00000000000..2c1b6e5df63
--- /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 00000000000..ceacada2a76
--- /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 00000000000..8e95445897c
--- /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 20b84515446..b4f346ee6ab 100644
--- a/gcc/tree-vect-stmts.cc
+++ b/gcc/tree-vect-stmts.cc
@@ -14678,7 +14678,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;