On Wed, 2024-01-24 at 18:32 +0800, chenxiaolong wrote: > 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?
Hmm, then we should remove check_effective_target_vect_int_mod. If we want to keep -fdump-tree-optimized for this test case and also make it correct, we'll at least have to move it into vect/, and write something like { dg-final { scan-tree-dump-times " % " 9 "optimized" { target { ! vect_int_mod } } } } { dg-final { scan-tree-dump-times " % " 6 "optimized" { target { vect_int_mod && vect128 } } } } { dg-final { scan-tree-dump-times " % " 7 "optimized" { target { vect_int_mod && vect64 && !vect128 } } } } and how about vect256 etc? This would be very nasty and deviating from the original purpose of this test case (against PR104992, which is a missed-optimization issue unrelated to vectors). -- Xi Ruoyao <xry...@xry111.site> School of Aerospace Science and Technology, Xidian University