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