| /* { dg-do compile } */ |
| /* { dg-options "-O3 -fdump-tree-ifcvt-blocks-details" } */ |
| |
| void foo (long *a) |
| { |
| int i; |
| for (i = 0; i < 100; i+=2) |
| { |
| long *p = &a[i+1]; |
| if (a[i] == 0) |
| { |
| *p = 2; |
| a[i] = 3; |
| } |
| else |
| { |
| *p = 3; |
| a[i] = 4; |
| } |
| } |
| } |
| |
| /* { dg-final { scan-tree-dump "Applying if-conversion" "ifcvt" } } */ |
| /* We insert into code |
| if (LOOP_VECTORIZED (...)) |
| which is folded by vectorizer. Both outgoing edges must have probability |
| 100% so the resulting profile match after folding. */ |
| /* { dg-final { scan-tree-dump-times "Invalid sum of outgoing probabilities 200.0" 1 "ifcvt" } } */ |
| /* { dg-final { scan-tree-dump-times "Invalid sum of incoming counts" 1 "ifcvt" } } */ |
| |