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