1 /* { dg-do compile } */
2 /* { dg-options "-c -O2 -ftree-vectorize -fdump-tree-ifcvt-stats-blocks-details" { target *-*-* } } */
3
4 #include <stdarg.h>
5
6 #define N 16
7 #define MAX 42
8
9 int A[N] = {36,39,42,45,43,32,21,12,23,34,45,56,67,78,89,11};
10
11 extern void abort(void);
12
main1()13 int main1 ()
14 {
15 int i, j;
16
17 for (i = 0; i < N; i++)
18 {
19 j = A[i];
20 A[i] = ( j >= MAX ? MAX : 0);
21 }
22
23 /* check results: */
24 for (i = 0; i < N; i++)
25 {
26 if (A[i] > MAX)
27 abort ();
28 }
29
30 return 0;
31 }
32
33
34
35 /* { dg-final { scan-tree-dump-times "Applying if-conversion" 1 "ifcvt" } } */
36
37 /* We insert into code
38 if (LOOP_VECTORIZED (...))
39 which is folded by vectorizer. Both outgoing edges must have probability
40 100% so the resulting profile match after folding. */
41 /* { dg-final { scan-tree-dump-times "Invalid sum of outgoing probabilities 200.0" 1 "ifcvt" } } */
42 /* { dg-final { scan-tree-dump-times "Invalid sum of incoming counts" 1 "ifcvt" } } */
43