1 /* Checks that pure functions are not treated as const. */ 2 3 char *p; 4 5 static int __attribute__ ((pure)) is_end_of_statement(void)6is_end_of_statement (void) 7 { 8 return *p == '\n' || *p == ';' || *p == '!'; 9 } 10 foo(void)11void foo (void) 12 { 13 /* The is_end_of_statement call was moved out of the loop at one stage, 14 resulting in an endless loop. */ 15 while (!is_end_of_statement ()) 16 p++; 17 } 18 19 int main(void)20main (void) 21 { 22 p = "abc\n"; 23 foo (); 24 return 0; 25 } 26