internal-linkage.cpp revision 15e310a3b970b64a84cb30f0005bc396b4d978cb
10b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s 20b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor 3516a6bc399f1f4595423e80c9d4bc687f870acd1Douglas Gregorstruct Global { Global(); }; 415e310a3b970b64a84cb30f0005bc396b4d978cbJohn McCalltemplate<typename T> struct X { X() {} }; 50b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor 60b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor 70b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregornamespace { 815e310a3b970b64a84cb30f0005bc396b4d978cbJohn McCall struct Anon { Anon() {} }; 90b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor 100b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor // CHECK: @_ZN12_GLOBAL__N_15anon0E = internal global 110b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor Global anon0; 120b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor} 130b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor 140b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor// CHECK: @anon1 = internal global 150b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas GregorAnon anon1; 160b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor 170b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor// CHECK: @anon2 = internal global 180b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas GregorX<Anon> anon2; 190b6bc8bd7a1d2a7d7478d13d78cff94cacad61fcDouglas Gregor 202bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian// rdar: // 8071804 212bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianchar const * const xyzzy = "Hello, world!"; 222bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianextern char const * const xyzzy; 232bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 242bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianchar const * const *test1() 252bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian{ 262bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian // CHECK: @_ZL5xyzzy = internal constant 272bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian return &xyzzy; 282bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian} 292bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 302bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianstatic char const * const static_xyzzy = "Hello, world!"; 312bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianextern char const * const static_xyzzy; 322bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 332bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianchar const * const *test2() 342bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian{ 352bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian // CHECK: @_ZL12static_xyzzy = internal constant 362bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian return &static_xyzzy; 372bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian} 382bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 392bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianstatic char const * static_nonconst_xyzzy = "Hello, world!"; 402bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianextern char const * static_nonconst_xyzzy; 412bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 422bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianchar const * *test3() 432bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian{ 442bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian // CHECK: @_ZL21static_nonconst_xyzzy = internal global 452bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian return &static_nonconst_xyzzy; 462bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian} 472bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 482bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 492bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianchar const * extern_nonconst_xyzzy = "Hello, world!"; 502bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianextern char const * extern_nonconst_xyzzy; 512bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian 522bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanianchar const * *test4() 532bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian{ 542bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian // CHECK: @extern_nonconst_xyzzy = global 552bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian return &extern_nonconst_xyzzy; 562bf6d7b1f7406ca4dfe841d4f6ef4b91dce195e4Fariborz Jahanian} 57