vect: Fix ICE caused by missing check for TREE_CODE == SSA_NAME
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_gcc_build--master-arm |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_gcc_check--master-aarch64 |
success
|
Test passed
|
linaro-tcwg-bot/tcwg_gcc_check--master-arm |
success
|
Test passed
|
Commit Message
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
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;
>
>
new file mode 100644
@@ -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);
+}
new file mode 100644
@@ -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]);
+}
new file mode 100644
@@ -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]);
+}
+
@@ -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;