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 <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)