blob: ef9a3e8c22bc0259a07f0d784130ac6bc9836e0d [file] [log] [blame]
// { 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" } }