1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li struct Global { Global(); }; XX4*67e74705SXin Litemplate<typename T> struct X { X() {} }; 5*67e74705SXin Li 6*67e74705SXin Li 7*67e74705SXin Li namespace { Anon__anone82d7a970111::Anon8*67e74705SXin Li struct Anon { Anon() {} }; 9*67e74705SXin Li 10*67e74705SXin Li // CHECK: @_ZN12_GLOBAL__N_15anon0E = internal global 11*67e74705SXin Li Global anon0; 12*67e74705SXin Li } 13*67e74705SXin Li 14*67e74705SXin Li // CHECK: @anon1 = internal global 15*67e74705SXin Li Anon anon1; 16*67e74705SXin Li 17*67e74705SXin Li // CHECK: @anon2 = internal global 18*67e74705SXin Li X<Anon> anon2; 19*67e74705SXin Li 20*67e74705SXin Li // rdar: // 8071804 21*67e74705SXin Li char const * const xyzzy = "Hello, world!"; 22*67e74705SXin Li extern char const * const xyzzy; 23*67e74705SXin Li test1()24*67e74705SXin Lichar const * const *test1() 25*67e74705SXin Li { 26*67e74705SXin Li // CHECK: @_ZL5xyzzy = internal constant 27*67e74705SXin Li return &xyzzy; 28*67e74705SXin Li } 29*67e74705SXin Li 30*67e74705SXin Li static char const * const static_xyzzy = "Hello, world!"; 31*67e74705SXin Li extern char const * const static_xyzzy; 32*67e74705SXin Li test2()33*67e74705SXin Lichar const * const *test2() 34*67e74705SXin Li { 35*67e74705SXin Li // CHECK: @_ZL12static_xyzzy = internal constant 36*67e74705SXin Li return &static_xyzzy; 37*67e74705SXin Li } 38*67e74705SXin Li 39*67e74705SXin Li static char const * static_nonconst_xyzzy = "Hello, world!"; 40*67e74705SXin Li extern char const * static_nonconst_xyzzy; 41*67e74705SXin Li test3()42*67e74705SXin Lichar const * *test3() 43*67e74705SXin Li { 44*67e74705SXin Li // CHECK: @_ZL21static_nonconst_xyzzy = internal global 45*67e74705SXin Li return &static_nonconst_xyzzy; 46*67e74705SXin Li } 47*67e74705SXin Li 48*67e74705SXin Li 49*67e74705SXin Li char const * extern_nonconst_xyzzy = "Hello, world!"; 50*67e74705SXin Li extern char const * extern_nonconst_xyzzy; 51*67e74705SXin Li test4()52*67e74705SXin Lichar const * *test4() 53*67e74705SXin Li { 54*67e74705SXin Li // CHECK: @extern_nonconst_xyzzy = global 55*67e74705SXin Li return &extern_nonconst_xyzzy; 56*67e74705SXin Li } 57*67e74705SXin Li 58*67e74705SXin Li // PR10120 59*67e74705SXin Li template <typename T> class klass { 60*67e74705SXin Li virtual void f(); 61*67e74705SXin Li }; 62*67e74705SXin Li namespace { struct S; } foo()63*67e74705SXin Livoid foo () { klass<S> x; } 64*67e74705SXin Li // CHECK: @_ZTV5klassIN12_GLOBAL__N_11SEE = internal unnamed_addr constant 65