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