| /* { dg-require-effective-target freorder } */ |
| /* { dg-options "-O2 -freorder-blocks-and-partition -fschedule-insns -fselective-scheduling" { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */ |
| |
| extern void abort (void); |
| |
| int ifelse_val2; |
| |
| int __attribute__((noinline)) |
| test_ifelse2 (int i) |
| { |
| int result = 0; |
| if (!i) /* count(6) */ |
| result = 1; /* count(1) */ |
| if (i == 1) /* count(6) */ |
| result = 1024; |
| if (i == 2) /* count(6) */ |
| result = 2; /* count(3) */ |
| if (i == 3) /* count(6) */ |
| return 8; /* count(2) */ |
| if (i == 4) /* count(4) */ |
| return 2048; |
| return result; /* count(4) */ |
| } |
| |
| void __attribute__((noinline)) |
| call_ifelse () |
| { |
| ifelse_val2 += test_ifelse2 (0); |
| ifelse_val2 += test_ifelse2 (2); |
| ifelse_val2 += test_ifelse2 (2); |
| ifelse_val2 += test_ifelse2 (2); |
| ifelse_val2 += test_ifelse2 (3); |
| ifelse_val2 += test_ifelse2 (3); |
| } |
| |
| int |
| main() |
| { |
| call_ifelse (); |
| if (ifelse_val2 != 23) |
| abort (); |
| return 0; |
| } |