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; | |
} |