1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -emit-llvm -o %t %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: grep '@r = common global \[1 x .*\] zeroinitializer' %t
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint r[];
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint (*a)[] = &r;
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct s0;
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct s0 x;
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: grep '@x = common global .struct.s0 zeroinitializer' %t
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct s0 y;
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: grep '@y = common global .struct.s0 zeroinitializer' %t
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct s0 *f0() {
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  return &y;
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct s0 {
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int x;
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: grep '@b = common global \[1 x .*\] zeroinitializer' %t
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint b[];
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint *f1() {
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  return b;
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// Check that the most recent tentative definition wins.
29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: grep '@c = common global \[4 x .*\] zeroinitializer' %t
30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint c[];
31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint c[4];
32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// Check that we emit static tentative definitions
34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: grep '@c5 = internal global \[1 x .*\] zeroinitializer' %t
35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic int c5[];
36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic int func() { return c5[0]; }
37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint callfunc() { return func(); }
38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
39