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