Sorry for the late reply. I just pushed a fix for the test failure
r16-6812-g591e22d91eb0b27d9c54f4df939e28fb81d08093.

Thanks,
Pengxuan

On Wed, Jan 14, 2026 at 12:30 AM Jakub Jelinek <[email protected]> wrote:

> On Fri, Jan 09, 2026 at 11:26:51AM -0800, Pengxuan Zheng wrote:
> >       PR tree-optimization/123109
> >       * gcc.dg/pr123109.c: New test.
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.dg/pr123109.c
> > @@ -0,0 +1,25 @@
> > +/* { dg-do compile } */
> > +/* { dg-options "-O2 -fdump-tree-optimized" } */
> > +
> > +typedef int v4si __attribute__((vector_size(4 * sizeof(int))));
> > +typedef unsigned int v4usi __attribute__((vector_size(4 *
> sizeof(unsigned int))));
> > +
> > +#define TEST_NE(type)                                         \
> > +  type test_ne_##type (type a) { return (a >> 31) != 0; }
> > +
> > +#define TEST_EQ(type)                                         \
> > +  type test_eq_##type (type a) { return (a >> 31) == 0; }
> > +
> > +TEST_NE(int)
> > +TEST_NE(unsigned)
> > +TEST_NE(v4si)
> > +TEST_NE(v4usi)
> > +TEST_EQ(int)
> > +TEST_EQ(unsigned)
> > +TEST_EQ(v4si)
> > +TEST_EQ(v4usi)
> > +
> > +/* { dg-final { scan-tree-dump-times ">= 0" 2 optimized } } */
> > +/* { dg-final { scan-tree-dump-times "< 0" 2 optimized } } */
> > +/* { dg-final { scan-tree-dump-times ">= { 0, 0, 0, 0 }" 2 optimized }
> } */
> > +/* { dg-final { scan-tree-dump-times ">> 31" 2 optimized } } */
>
> This test FAILs on i686-linux and I bet lots of other targets.
> There are 2 problems.  One is -Wpsabi warnings are emitted on
> some targets and the more important one, as this is scanning the
> optimized dump, if the selected ISA doesn't support V4SImode
> (or V4HImode for 16-bit int targets) vectors natively, vector
> lowering will lower it to something that will certainly not
> match the scan-tree-dump-times counts.
> So, either add -Wpsabi to dg-options and scan some dump before
> veclower, or the test should be limited to targets with 4x int vector
> hw support.  Though e.g. vect_int effective target is I think only
> usable within vect.exp guarded tests because it relies on extra
> options added for vect.exp tests.  I think you can't
> invoke check_vect_support_and_set_flags in other tests.
> Another option is to enable the test on selected targets which
> are known to include that support by default or dg-additional-options
> add whatever is needed on the selected targets, e.g.
> /* { dg-additional-options "-msse2" { target { i?86-*-* x86_64-*-* } } } */
> would do for ia32.
> And/or split the test to test scalar stuff separately from vector stuff,
> and do whatever solution you use for the vector stuff only on the
> vector test and keep the scalar one on all targets.
>
>         Jakub
>
>

Reply via email to