| /* { 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; |
| } |
| } |
| } |
| |