• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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