On Thu, Mar 06, 2025 at 04:09:35PM +0100, Jakub Jelinek wrote:
> Starting with r15-4225 the loop in foo1 is vectorized even at -O2 and that
> implies later some small unrolling, regardless of -funroll-loops flag being
> added in
> #pragma GCC optimize("O3,unroll-loops")
> only for foo2.
> My understanding of the intent of the test was that before r12-5920 test the
> backend caused -funroll-loops to be set even for foo1 despite the pragma
> only appeared after it and the test just wanted to make sure unrolling is
> done just in the function with -funroll-loops.
> Now, seems the unrolling was happening with -O2 -fno-tree-vectorize as well,
> the test would have FAILed with the following patch before r12-5920 and
> PASSes since r12-5920 the same as with -O2, except that it still PASSes even
> starting with r15-4225.
>
> Tested with x86_64-linux -> powerpc64le-linux cross, ok for trunk?
>
> 2025-03-06 Jakub Jelinek <[email protected]>
>
> PR target/117207
> PR target/103515
> * gcc.target/powerpc/pr103515.c: Add -fno-tree-vectorize to
> dg-options.
I'd like to ping this patch.
Thanks.
> --- gcc/testsuite/gcc.target/powerpc/pr103515.c.jj 2022-01-11
> 23:11:23.207278673 +0100
> +++ gcc/testsuite/gcc.target/powerpc/pr103515.c 2025-03-06
> 15:57:48.507247453 +0100
> @@ -1,5 +1,5 @@
> /* { dg-do compile } */
> -/* { dg-options "-O2 -fdump-rtl-loop2_unroll-optimized" } */
> +/* { dg-options "-O2 -fno-tree-vectorize -fdump-rtl-loop2_unroll-optimized"
> } */
>
> /* The pragma specified for foo2 should not affect foo1.
> Verify compiler won't perform unrolling for foo1. */
Jakub