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

     1  struct PMC {
     2      unsigned flags;
     3  };
     4  
     5  typedef struct Pcc_cell
     6  {
     7      struct PMC *p;
     8      long bla;
     9      long type;
    10  } Pcc_cell;
    11  
    12  extern void abort ();
    13  extern void Parrot_gc_mark_PMC_alive_fun(int * interp, struct PMC *pmc)
    14       __attribute__((noinline));
    15  
    16  void Parrot_gc_mark_PMC_alive_fun (int * interp, struct PMC *pmc)
    17  {
    18    abort ();
    19  }
    20  
    21  static void mark_cell(int * interp, Pcc_cell *c)
    22          __attribute__((__nonnull__(1)))
    23          __attribute__((__nonnull__(2)))
    24          __attribute__((noinline));
    25  
    26  static void
    27  mark_cell(int * interp, Pcc_cell *c)
    28  {
    29              if (c->type == 4 && c->p
    30  		&& !(c->p->flags & (1<<18)))
    31  	      Parrot_gc_mark_PMC_alive_fun(interp, c->p);
    32  }
    33  
    34  void foo(int * interp, Pcc_cell *c);
    35  
    36  void
    37  foo(int * interp, Pcc_cell *c)
    38  {
    39    mark_cell(interp, c);
    40  }
    41  
    42  int main()
    43  {
    44    int i;
    45    Pcc_cell c;
    46    c.p = 0;
    47    c.bla = 42;
    48    c.type = 4;
    49    foo (&i, &c);
    50    return 0;
    51  }