On Tue, 7 Nov 2023, Juzhe-Zhong wrote: > As https://godbolt.org/z/hPsqahEa5 shows. > RVV failed dump check since "vectorizing stmts using SLP" shows 3 times > instead of 2. > > The root cause is this code in main: > > if (a[0] != 1 > || a[1] != 2 > || a[2] != 3 > || a[3] != 4 > || a[4] != 7 > || a[5] != 0 > || a[6] != 0 > || a[7] != 0 > || a[8] != 0) > abort (); > > is vectorized. So add -fno-tree-vectorize avoid the confusing check.
Uh, please don't add optimize attributes. If you see this vectorized (as reduction?) then please instead rewrite the condition as if (a[0] != 1) abort (); __asm__ volatile (""); if (a[1] != 2) abort (); ... > gcc/testsuite/ChangeLog: > > * gcc.dg/vect/bb-slp-33.c: Add -fno-tree-vectorize to main. > > --- > gcc/testsuite/gcc.dg/vect/bb-slp-33.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c > b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c > index bbb13ef798e..f44cbdcfbcf 100644 > --- a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c > +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c > @@ -17,7 +17,8 @@ test(int *__restrict__ a, int *__restrict__ b) > a[8] = 0; > } > > -int main() > +int __attribute__((optimize(("-fno-tree-vectorize")))) > +main() > { > int a[9]; > int b[4]; > -- 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)