/* Checks that pure functions are not treated as const.  */

char *p;

static int __attribute__((pure))
is_end_of_statement(void) {
    return *p == '\n' || *p == ';' || *p == '!';
}

void foo(void) {
    /* The is_end_of_statement call was moved out of the loop at one stage,
     resulting in an endless loop.  */
    while (!is_end_of_statement())
        p++;
}

int main(void) {
    p = "abc\n";
    foo();
    return 0;
}
