modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20000801-2.c (about)

     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  
    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  
    20  int bar (void)
    21  {
    22    return 0;
    23  }
    24  
    25  int baz (void)
    26  {
    27    return 0;
    28  }
    29  
    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  }