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

     1  extern int f1 (void **);
     2  extern void f2 (void *);
     3  
     4  struct s
     5  {
     6    unsigned char field1;
     7    int field2;
     8  };
     9  
    10  static inline struct s *
    11  get_globals (void)
    12  {
    13    struct s * r;
    14    void * rr;
    15  
    16    if (f1 (&rr))
    17      return 0;
    18    r = rr;
    19    if (! r)
    20      {
    21        extern struct s t;
    22        r = &t;
    23      }
    24    r->field1 = 1;
    25    return r;
    26  }
    27  
    28  void
    29  atexit_common (const void *dso)
    30  {
    31    struct s *g = get_globals ();
    32  
    33    if (! g)
    34      return;
    35    if (g->field1)
    36      {
    37        g->field2 = 0;
    38        f2 (g);
    39      }
    40    else
    41      f2 (g);
    42  }