]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
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 | }; |