1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -o - -triple i386-linux-gnu %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // This checks that the global won't be marked as common. 4*67e74705SXin Li // (It shouldn't because it's being initialized). 5*67e74705SXin Li 6*67e74705SXin Li int a; 7*67e74705SXin Li int a = 242; 8*67e74705SXin Li // CHECK: @a = global i32 242 9*67e74705SXin Li 10*67e74705SXin Li // This should get normal weak linkage. 11*67e74705SXin Li int c __attribute__((weak))= 0; 12*67e74705SXin Li // CHECK: @c = weak global i32 0 13*67e74705SXin Li 14*67e74705SXin Li 15*67e74705SXin Li // Since this is marked const, it should get weak_odr linkage, since all 16*67e74705SXin Li // definitions have to be the same. 17*67e74705SXin Li // CHECK: @d = weak_odr constant i32 0 18*67e74705SXin Li const int d __attribute__((weak))= 0; 19*67e74705SXin Li 20*67e74705SXin Li // PR6168 "too many undefs" 21*67e74705SXin Li struct ManyFields { 22*67e74705SXin Li int a; 23*67e74705SXin Li int b; 24*67e74705SXin Li int c; 25*67e74705SXin Li char d; 26*67e74705SXin Li int e; 27*67e74705SXin Li int f; 28*67e74705SXin Li }; 29*67e74705SXin Li 30*67e74705SXin Li // CHECK: global %struct.ManyFields { i32 1, i32 2, i32 0, i8 0, i32 0, i32 0 } 31*67e74705SXin Li struct ManyFields FewInits = {1, 2}; 32*67e74705SXin Li 33*67e74705SXin Li 34*67e74705SXin Li // PR6766 35*67e74705SXin Li // CHECK: @l = global %struct.K { [6 x i32] [i32 102, i32 111, i32 111, i32 0, i32 0, i32 0], i32 1 } 36*67e74705SXin Li typedef __WCHAR_TYPE__ wchar_t; 37*67e74705SXin Li struct K { 38*67e74705SXin Li wchar_t L[6]; 39*67e74705SXin Li int M; 40*67e74705SXin Li } l = { { L"foo" }, 1 }; 41*67e74705SXin Li 42*67e74705SXin Li 43*67e74705SXin Li // CHECK: @yuv_types = global [4 x [6 x i8]] {{\[}}[6 x i8] c"4:0:0\00", [6 x i8] c"4:2:0\00", [6 x i8] c"4:2:2\00", [6 x i8] c"4:4:4\00"] 44*67e74705SXin Li char yuv_types[4][6]= {"4:0:0","4:2:0","4:2:2","4:4:4"}; 45*67e74705SXin Li 46*67e74705SXin Li 47*67e74705SXin Li // NOTE: tentative definitions are processed at the end of the translation unit. 48*67e74705SXin Li 49*67e74705SXin Li // This shouldn't be emitted as common because it has an explicit section. 50*67e74705SXin Li // rdar://7119244 51*67e74705SXin Li // CHECK: @b = global i32 0, section "foo" 52*67e74705SXin Li int b __attribute__((section("foo"))); 53