| /* For PR rtl-optimization/27735 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -funswitch-loops -fdump-tree-unswitch-all -fno-finite-loops" } */ |
| |
| void set_color(void); |
| void xml_colorize_line(unsigned int *p, int state) |
| { |
| int c; |
| switch(state) |
| { |
| case 1: |
| goto parse_tag; |
| case 2: |
| goto parse_comment; |
| } |
| |
| for(;;) |
| { |
| c = *p; |
| if (c == '<' && state == 0) |
| { |
| parse_comment: ; |
| while (*p != '\n') |
| state = 3; |
| parse_tag: ; |
| while (*p != '\n') |
| state = 0; |
| set_color(); |
| } |
| else |
| p++; |
| } |
| } |
| |
| /* Test that we actually unswitched something. */ |
| /* { dg-final { scan-tree-dump "unswitching loop" "unswitch" } } */ |