| extern void marker_A(void); |
| extern void marker_B(void); |
| extern void marker_C(void); |
| extern void marker_D(void); |
| |
| void test(int flag) |
| { |
| marker_A(); |
| |
| if (flag) { |
| marker_B(); |
| |
| /* Recurse, infinitely, as it happens: */ |
| test(flag); |
| |
| marker_C(); |
| } |
| |
| marker_D(); |
| } |
| |
| /* A cycle of 4 mutually-recursive functions (but only for certain inputs). */ |
| |
| extern void mutual_test_1 (int flag); |
| extern void mutual_test_2 (int flag); |
| extern void mutual_test_3 (int flag); |
| extern void mutual_test_4 (int flag); |
| |
| void mutual_test_1 (int flag) |
| { |
| marker_A (); |
| if (flag) |
| mutual_test_2 (flag); |
| } |
| |
| void mutual_test_2 (int flag) |
| { |
| marker_B (); |
| if (flag) |
| mutual_test_3 (flag); |
| } |
| |
| void mutual_test_3 (int flag) |
| { |
| marker_C (); |
| if (flag) |
| mutual_test_4 (flag); |
| } |
| |
| void mutual_test_4 (int flag) |
| { |
| marker_D (); |
| if (flag) |
| mutual_test_1 (flag); |
| } |