| /* { dg-options "-O2 -fdump-tree-optimized -fdump-ipa-profile-optimized" } */ |
| unsigned int a[1000]; |
| unsigned int b = 999; |
| unsigned int c = 1002; |
| unsigned int d = 1003; |
| int |
| main () |
| { |
| int i; |
| unsigned int n; |
| for (i = 0; i < 1000; i++) |
| { |
| a[i]=1000+i; |
| } |
| for (i = 0; i < 1000; i++) |
| { |
| if (i % 2) |
| n = b; |
| else if (i % 3) |
| n = c; |
| else |
| n = d; |
| a[i] %= n; |
| } |
| return 0; |
| } |
| /* autofdo does not do value profiling so far */ |
| /* { dg-final-use-not-autofdo { scan-ipa-dump "Transformation done: mod subtract" "profile" } } */ |
| /* This is part of code checking that n is greater than the divisor so we are sure that it |
| didn't get optimized out. */ |
| /* { dg-final-use-not-autofdo { scan-tree-dump "if \\(n_\[0-9\]* \\>" "optimized"} } */ |
| /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */ |