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...@intel.com>
>           Andrew Pinski <quic_apin...@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;
>  
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to