| // { dg-do compile } |
| // { dg-additional-options "-fcompare-debug" } |
| |
| extern void fancy_abort () __attribute__ ((__noreturn__)); |
| extern "C" { |
| struct __jmp_buf_tag { }; |
| typedef struct __jmp_buf_tag jmp_buf[1]; |
| extern int _setjmp (struct __jmp_buf_tag __env[1]) throw (); |
| } |
| extern void *gfc_state_stack; |
| static jmp_buf eof_buf; |
| static void push_state () |
| { |
| if (!gfc_state_stack) |
| fancy_abort (); |
| } |
| bool gfc_parse_file (void) |
| { |
| int seen_program=0; |
| if (_setjmp (eof_buf)) |
| return false; |
| if (seen_program) |
| goto duplicate_main; |
| seen_program = 1; |
| push_state (); |
| push_state (); |
| duplicate_main: |
| return true; |
| } |