46 lines
828 B
C
46 lines
828 B
C
|
/* { dg-do compile } */
|
||
|
/* { dg-options "-O2" } */
|
||
|
|
||
|
/* PR17513 - we hit a bug where EDGE_EXECUTABLE was not cleared on
|
||
|
successors of the entry block. This lead to a flow verification
|
||
|
error much later in the compilation (after gcse). */
|
||
|
typedef unsigned char uint8;
|
||
|
typedef unsigned int uint32;
|
||
|
|
||
|
uint32 marker = 0;
|
||
|
uint8 *buff = 0;
|
||
|
uint32 bsize = 0;
|
||
|
|
||
|
extern int foo (void);
|
||
|
|
||
|
uint32
|
||
|
bar (void)
|
||
|
{
|
||
|
int len, d;
|
||
|
|
||
|
for (;;)
|
||
|
{
|
||
|
if (foo () == 0)
|
||
|
return (0);
|
||
|
|
||
|
switch (marker)
|
||
|
{
|
||
|
case 0xfe:
|
||
|
{
|
||
|
len |= (*buff++);
|
||
|
bsize -= 2;
|
||
|
|
||
|
while (len > 0)
|
||
|
{
|
||
|
d = *buff++;
|
||
|
len--;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|