| // RUN: clang -emit-llvm < %s -o - |
| |
| // A nice and complicated initialization example with unions from Python |
| typedef int Py_ssize_t; |
| |
| typedef union _gc_head { |
| struct { |
| union _gc_head *gc_next; |
| union _gc_head *gc_prev; |
| Py_ssize_t gc_refs; |
| } gc; |
| long double dummy; /* force worst-case alignment */ |
| } PyGC_Head; |
| |
| struct gc_generation { |
| PyGC_Head head; |
| int threshold; /* collection threshold */ |
| int count; /* count of allocations or collections of younger |
| generations */ |
| }; |
| |
| #define NUM_GENERATIONS 3 |
| #define GEN_HEAD(n) (&generations[n].head) |
| |
| /* linked lists of container objects */ |
| struct gc_generation generations[NUM_GENERATIONS] = { |
| /* PyGC_Head, threshold, count */ |
| {{{GEN_HEAD(0), GEN_HEAD(0), 0}}, 700, 0}, |
| {{{GEN_HEAD(1), GEN_HEAD(1), 0}}, 10, 0}, |
| {{{GEN_HEAD(2), GEN_HEAD(2), 0}}, 10, 0}, |
| }; |