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