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

     1  typedef struct { char *addr; long type; } object;
     2  
     3  object bar (object blah)
     4  {
     5    abort();
     6  }
     7  
     8  object foo (object x, object y)
     9  {
    10    object z = *(object*)(x.addr);
    11    if (z.type & 64)
    12      {
    13        y = *(object*)(z.addr+sizeof(object));
    14        z = *(object*)(z.addr);
    15        if (z.type & 64)
    16          y = bar(y);
    17      }
    18    return y;
    19  }
    20  
    21  int nil;
    22  object cons1[2] = { {(char *) &nil, 0}, {(char *) &nil, 0} };
    23  object cons2[2] = { {(char *) &cons1, 64}, {(char *) &nil, 0} };
    24  
    25  main()
    26  {
    27    object x = {(char *) &cons2, 64};
    28    object y = {(char *) &nil, 0};
    29    object three = foo(x,y);
    30    return 0;
    31  }