1 extern int f2(void); 2 extern int f3(void); 3 extern void f1(void); 4 5 void ff(int fname,int part,int nparts)6ff(int fname, int part, int nparts) 7 { 8 if (fname) /* bb 0 */ 9 { 10 if (nparts) /* bb 1 */ 11 f1(); /* bb 2 */ 12 } 13 else 14 fname = 2; /* bb 3 */ 15 16 /* bb 4 is the branch to bb 10 17 (bb 10 is physically at the end of the loop) */ 18 while (f3() /* bb 10 */) 19 { 20 if (nparts /* bb 5 */ && f2() /* bb 6 */) 21 { 22 f1(); /* bb 7 ... */ 23 nparts = part; 24 if (f3()) /* ... bb 7 */ 25 f1(); /* bb 8 */ 26 f1(); /* bb 9 */ 27 break; 28 } 29 } 30 31 if (nparts) /* bb 11 */ 32 f1(); /* bb 12 */ 33 return; /* bb 13 */ 34 } 35 main(void)36int main(void) 37 { 38 ff(0, 1, 0); 39 return 0; 40 } 41 f3(void)42int f3(void) { static int x = 0; x = !x; return x; } f1(void)43void f1(void) { abort(); } f2(void)44int f2(void) { abort(); } 45