1 // This test checks if internal linkage symbols get unique names with 2 // -funique-internal-linkage-names option. 3 // RUN: %clang_cc1 -triple x86_64 -x c++ -S -emit-llvm -o - < %s | FileCheck %s --check-prefix=PLAIN 4 // RUN: %clang_cc1 -triple x86_64 -x c++ -S -emit-llvm -funique-internal-linkage-names -o - < %s | FileCheck %s --check-prefix=UNIQUE 5 // RUN: %clang_cc1 -triple x86_64 -x c++ -S -emit-llvm -fexperimental-new-pass-manager -funique-internal-linkage-names -o - < %s | FileCheck %s --check-prefix=UNIQUE 6 7 static int glob; 8 static int foo() { 9 return 0; 10 } 11 12 int (*bar())() { 13 return foo; 14 } 15 16 int getGlob() { 17 return glob; 18 } 19 20 // Function local static variable and anonymous namespace namespace variable. 21 namespace { 22 int anon_m; 23 int getM() { 24 return anon_m; 25 } 26 } // namespace 27 28 int retAnonM() { 29 static int fGlob; 30 return getM() + fGlob; 31 } 32 33 // Multiversioning symbols 34 __attribute__((target("default"))) static int mver() { 35 return 0; 36 } 37 38 __attribute__((target("sse4.2"))) static int mver() { 39 return 1; 40 } 41 42 int mver_call() { 43 return mver(); 44 } 45 46 // PLAIN: @_ZL4glob = internal global 47 // PLAIN: @_ZZ8retAnonMvE5fGlob = internal global 48 // PLAIN: @_ZN12_GLOBAL__N_16anon_mE = internal global 49 // PLAIN: define internal i32 @_ZL3foov() 50 // PLAIN: define internal i32 @_ZN12_GLOBAL__N_14getMEv 51 // PLAIN: define weak_odr i32 ()* @_ZL4mverv.resolver() 52 // PLAIN: define internal i32 @_ZL4mverv() 53 // PLAIN: define internal i32 @_ZL4mverv.sse4.2() 54 // UNIQUE: @_ZL4glob.{{[0-9a-f]+}} = internal global 55 // UNIQUE: @_ZZ8retAnonMvE5fGlob.{{[0-9a-f]+}} = internal global 56 // UNIQUE: @_ZN12_GLOBAL__N_16anon_mE.{{[0-9a-f]+}} = internal global 57 // UNIQUE: define internal i32 @_ZL3foov.{{[0-9a-f]+}}() 58 // UNIQUE: define internal i32 @_ZN12_GLOBAL__N_14getMEv.{{[0-9a-f]+}} 59 // UNIQUE: define weak_odr i32 ()* @_ZL4mverv.resolver() 60 // UNIQUE: define internal i32 @_ZL4mverv.{{[0-9a-f]+}}() 61 // UNIQUE: define internal i32 @_ZL4mverv.sse4.2.{{[0-9a-f]+}} 62