modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr49886.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  int gi;
    13  int cond;
    14  
    15  extern void abort ();
    16  extern void never_ever(int interp, struct PMC *pmc)
    17    __attribute__((noinline,noclone));
    18  
    19  void never_ever (int interp, struct PMC *pmc)
    20  {
    21    abort ();
    22  }
    23  
    24  static void mark_cell(int * interp, Pcc_cell *c)
    25    __attribute__((__nonnull__(1)));
    26  
    27  static void
    28  mark_cell(int * interp, Pcc_cell *c)
    29  {
    30    if (!cond)
    31      return;
    32  
    33    if (c && c->type == 4 && c->p
    34        && !(c->p->flags & (1<<18)))
    35      never_ever(gi + 1, c->p);
    36    if (c && c->type == 4 && c->p
    37        && !(c->p->flags & (1<<17)))
    38      never_ever(gi + 2, c->p);
    39    if (c && c->type == 4 && c->p
    40        && !(c->p->flags & (1<<16)))
    41      never_ever(gi + 3, c->p);
    42    if (c && c->type == 4 && c->p
    43        && !(c->p->flags & (1<<15)))
    44      never_ever(gi + 4, c->p);
    45    if (c && c->type == 4 && c->p
    46        && !(c->p->flags & (1<<14)))
    47      never_ever(gi + 5, c->p);
    48    if (c && c->type == 4 && c->p
    49        && !(c->p->flags & (1<<13)))
    50      never_ever(gi + 6, c->p);
    51    if (c && c->type == 4 && c->p
    52        && !(c->p->flags & (1<<12)))
    53      never_ever(gi + 7, c->p);
    54    if (c && c->type == 4 && c->p
    55        && !(c->p->flags & (1<<11)))
    56      never_ever(gi + 8, c->p);
    57    if (c && c->type == 4 && c->p
    58        && !(c->p->flags & (1<<10)))
    59      never_ever(gi + 9, c->p);
    60  }
    61  
    62  static void
    63  foo(int * interp, Pcc_cell *c)
    64  {
    65    mark_cell(interp, c);
    66  }
    67  
    68  static struct Pcc_cell *
    69  __attribute__((noinline,noclone))
    70  getnull(void)
    71  {
    72    return (struct Pcc_cell *) 0;
    73  }
    74  
    75  
    76  int main()
    77  {
    78    int i;
    79  
    80    cond = 1;
    81    for (i = 0; i < 100; i++)
    82      foo (&gi, getnull ());
    83    return 0;
    84  }
    85  
    86  
    87  void
    88  bar_1 (int * interp, Pcc_cell *c)
    89  {
    90    c->bla += 1;
    91    mark_cell(interp, c);
    92  }
    93  
    94  void
    95  bar_2 (int * interp, Pcc_cell *c)
    96  {
    97    c->bla += 2;
    98    mark_cell(interp, c);
    99  }
   100