| const char *__attribute__((noinline)) | |
| foo (const char *p) | |
| { | |
| const char *end; | |
| int len = 1; | |
| for (;;) | |
| { | |
| int c = *p; | |
| c = (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c); | |
| if (c == 'B') | |
| end = p; | |
| else if (c == 'A') | |
| { | |
| end = p; | |
| do | |
| p++; | |
| while (*p == '+'); | |
| } | |
| else | |
| break; | |
| p++; | |
| len++; | |
| } | |
| if (len > 2 && *p == ':') | |
| p = end; | |
| return p; | |
| } | |
| int | |
| main (void) | |
| { | |
| const char *input = "Bbb:"; | |
| return foo (input) != input + 2; | |
| } |