1 /* Disabling epilogues until we find a better way to deal with scans. */
2 /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
3 /* { dg-require-effective-target vect_int } */
4 /* { dg-additional-options "-fno-tree-scev-cprop" } */
8 /* Statement in SLP vectorization used outside the loop.
9 NOTE: SCEV disabled to ensure the live operation is not removed before
11 #define LIVELOOP(RET) \
12 __attribute__ ((noinline)) int \
13 liveloop##RET (int n, int *x, int *y) \
16 for (j = 0; j < n; ++j) \
21 y[(j*2)+1] = n1 + 2; \
28 typedef int (*FP
)(int n
, int *x
, int *y
);
29 const FP llf
[]= {&liveloop0
, &liveloop1
};
42 for (i
=0; i
<MAX
*2; i
++)
44 __asm__
volatile ("");
51 __asm__
volatile ("");
53 int ret
= llf
[i
] (MAX
, a
, b
);
55 if (ret
!= (MAX
* 2) - 2 + i
)
59 for (i
=0; i
<MAX
*2; i
++)
61 __asm__
volatile ("");
62 if (b
[i
] != i
+ (i
%2) + 1)
68 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
69 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" } } */
70 /* { dg-final { scan-tree-dump-times "vec_stmt_relevant_p: stmt live but not relevant" 2 "vect" } } */