1 extern void abort(void);
2 extern void exit(int);
3 int bar(void);
4 int baz(void);
5 
6 struct foo {
7   struct foo *next;
8 };
9 
test(struct foo * node)10 struct foo *test(struct foo *node)
11 {
12   while (node) {
13     if (bar() && !baz())
14       break;
15     node = node->next;
16   }
17   return node;
18 }
19 
bar(void)20 int bar (void)
21 {
22   return 0;
23 }
24 
baz(void)25 int baz (void)
26 {
27   return 0;
28 }
29 
main(void)30 int main(void)
31 {
32   struct foo a, b, *c;
33 
34   a.next = &b;
35   b.next = (struct foo *)0;
36   c = test(&a);
37   if (c)
38     abort();
39   exit (0);
40 }
41