/* { dg-do compile } */ /* { dg-options "-O1 -funswitch-loops -fdump-tree-unswitch-details -fdump-tree-optimized" } */ int ch; int a[100]; void xxx(void) { int i; for (i = 0; i < 100; i++) { if (ch) a[i] = ch; else a[i] = i; } } /* Loop should be unswitched. */ /* { dg-final { scan-tree-dump-times "Unswitching loop" 1 "unswitch" } } */ /* { dg-final { cleanup-tree-dump "unswitch" } } */ /* In effect there should be exactly three conditional jumps in the final program. */ /* { dg-final { scan-tree-dump-times "else" 3 "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */