33 lines
728 B
C
33 lines
728 B
C
// { dg-do compile }
|
|
// { dg-options "-O2 -fdisable-tree-ethread -fdisable-tree-thread1 -fdisable-tree-thread2 -fno-tree-dominator-opts -fdump-tree-threadfull2-details" }
|
|
|
|
// Test that we can thread jumps across the backedge of a loop through
|
|
// the switch statement to a particular case.
|
|
//
|
|
// Just in case, we disable all the jump threaders before loop
|
|
// optimizations to make sure we get a clean stab at this.
|
|
|
|
int foo (unsigned int x, int s)
|
|
{
|
|
while (s != 999)
|
|
{
|
|
switch (s)
|
|
{
|
|
case 0:
|
|
if (x)
|
|
s = 1;
|
|
break;
|
|
case 1:
|
|
if (x)
|
|
s = 999;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
x++;
|
|
}
|
|
return s;
|
|
}
|
|
|
|
// { dg-final { scan-tree-dump "Registering jump thread:.*normal \\(back\\)" "threadfull2" } }
|