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)