| static int i, j; | |
| static void __attribute__((noinline,noclone)) | |
| foo (void) { i = 1; } | |
| static void __attribute__((noinline,noclone)) | |
| bar (void) { j = 1; } | |
| typedef void (*fn_t)(void); | |
| void escapeme (fn_t); | |
| fn_t getme (void); | |
| extern void link_error (void); | |
| int main() | |
| { | |
| fn_t fn; | |
| escapeme (foo); | |
| fn = getme(); | |
| i = 0; | |
| fn(); | |
| if (i != 1) | |
| return 100; | |
| j = 0; | |
| fn(); | |
| if (j != 0) | |
| link_error (); | |
| bar(); | |
| if (j != 1) | |
| return 200; | |
| return 0; | |
| } |