| #include <setjmp.h> | |
| #include <stdio.h> | |
| #include <time.h> | |
| jmp_buf j; | |
| void do_jump(void) | |
| { | |
| // We can't let the compiler know this will always happen or it might make | |
| // optimizations that break our test. | |
| if (!clock()) | |
| longjmp(j, 1); // non-local goto | |
| } | |
| int main (void) | |
| { | |
| if (setjmp(j) == 0) | |
| do_jump(); | |
| else | |
| return 0; // destination of longjmp | |
| return 1; | |
| } |