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