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