Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 -emit-llvm < %s -o -
      2 
      3 // A nice and complicated initialization example with unions from Python
      4 typedef int Py_ssize_t;
      5 
      6 typedef union _gc_head {
      7   struct {
      8     union _gc_head *gc_next;
      9     union _gc_head *gc_prev;
     10     Py_ssize_t gc_refs;
     11   } gc;
     12   long double dummy;  /* force worst-case alignment */
     13 } PyGC_Head;
     14 
     15 struct gc_generation {
     16   PyGC_Head head;
     17   int threshold; /* collection threshold */
     18   int count;     /* count of allocations or collections of younger
     19                     generations */
     20 };
     21 
     22 #define NUM_GENERATIONS 3
     23 #define GEN_HEAD(n) (&generations[n].head)
     24 
     25 /* linked lists of container objects */
     26 struct gc_generation generations[NUM_GENERATIONS] = {
     27   /* PyGC_Head,                     threshold,      count */
     28   {{{GEN_HEAD(0), GEN_HEAD(0), 0}}, 700,            0},
     29   {{{GEN_HEAD(1), GEN_HEAD(1), 0}},  10,            0},
     30   {{{GEN_HEAD(2), GEN_HEAD(2), 0}},  10,            0},
     31 };
     32