On 20:09 +0800 on Tuesday, 2024-01-23, Xi Ruoyao wrote: > The vect_int_mod target selector is evaluated with the options in > DEFAULT_VECTCFLAGS in effect, but these options are not automatically > passed to tests out of the vect directories. So this test fails on > targets where integer vector modulo operation is supported but > requiring > an option to enable, for example LoongArch. > > In this test case, the only expected optimization not happened in > original is in corge because it needs forward propogation. So we can > scan the forwprop2 dump (where the vector operation is not expanded > to > scalars yet) instead of optimized, then we don't need to consider > vect_int_mod or not. > > gcc/testsuite/ChangeLog: > > PR testsuite/113418 > * gcc.dg/pr104992.c (dg-options): Use -fdump-tree-forwprop2 > instead of -fdump-tree-optimized. > (dg-final): Scan forwprop2 dump instead of optimized, and > remove > the use of vect_int_mod. > --- > > This fixes the test failure on loongarch64-linux-gnu, and I've also > tested it on x86_64-linux-gnu. Ok for trunk? > > gcc/testsuite/gcc.dg/pr104992.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/gcc/testsuite/gcc.dg/pr104992.c > b/gcc/testsuite/gcc.dg/pr104992.c > index 82f8c75559c..6fd513d34b2 100644 > --- a/gcc/testsuite/gcc.dg/pr104992.c > +++ b/gcc/testsuite/gcc.dg/pr104992.c > @@ -1,6 +1,6 @@ > /* PR tree-optimization/104992 */ > /* { dg-do compile } */ > -/* { dg-options "-O2 -Wno-psabi -fdump-tree-optimized" } */ > +/* { dg-options "-O2 -Wno-psabi -fdump-tree-forwprop2" } */ > > #define vector __attribute__((vector_size(4*sizeof(int)))) > > @@ -54,5 +54,4 @@ __attribute__((noipa)) unsigned waldo (unsigned x, > unsigned y, unsigned z) { > return x / y * z == x; > } > > -/* { dg-final { scan-tree-dump-times " % " 9 "optimized" { target { > ! vect_int_mod } } } } */ > -/* { dg-final { scan-tree-dump-times " % " 6 "optimized" { target > vect_int_mod } } } */ > +/* { dg-final { scan-tree-dump-times " % " 6 "forwprop2" } } */
Hello, currently vect_int_mod vectorization operation detection only ppc,amd,riscv,LoongArch architecture support. When -fdump-tree- forwprop2 is used instead of -fdump-tree-optimized, The check_effective_target_vect_int_mod procedure defined in the target- supports.exp file will never be called. It will only be called on pr104992.c, should we consider supporting other architectures?