Skip to content

Commit 4dd1467

Browse files
committed
[test] Improve visibility.cpp
1 parent 8c3550b commit 4dd1467

File tree

1 file changed

+64
-12
lines changed

1 file changed

+64
-12
lines changed

clang/test/CodeGenCXX/visibility.cpp

Lines changed: 64 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,39 @@ namespace test72 {
123123
// CHECK-NEXT: @_ZN6test723fooIlE4var2IiEE = linkonce_odr global i32 0
124124
}
125125

126+
namespace test73 {
127+
struct HIDDEN foo {};
128+
DEFAULT foo da, db, dc, dd;
129+
HIDDEN foo ha, hb, hc, hd;
130+
template<foo *z> DEFAULT int var;
131+
132+
template int var<&da>;
133+
template int DEFAULT var<&db>;
134+
template int HIDDEN var<&dc>;
135+
template int var<&ha>;
136+
template int DEFAULT var<&hb>;
137+
template int HIDDEN var<&hc>;
138+
139+
int use() { return var<&dd> + var<&hd>; }
140+
// CHECK: @_ZN6test733varIXadL_ZNS_2daEEEEE = weak_odr hidden global i32 0
141+
// CHECK-NEXT: @_ZN6test733varIXadL_ZNS_2dbEEEEE = weak_odr global i32 0
142+
// CHECK-NEXT: @_ZN6test733varIXadL_ZNS_2dcEEEEE = weak_odr hidden global i32 0
143+
// CHECK-NEXT: @_ZN6test733varIXadL_ZNS_2haEEEEE = weak_odr hidden global i32 0
144+
// CHECK-NEXT: @_ZN6test733varIXadL_ZNS_2hbEEEEE = weak_odr global i32 0
145+
// CHECK-NEXT: @_ZN6test733varIXadL_ZNS_2hcEEEEE = weak_odr hidden global i32 0
146+
// CHECK: @_ZN6test733varIXadL_ZNS_2ddEEEEE = linkonce_odr hidden global i32 0
147+
// CHECK-NEXT: @_ZN6test733varIXadL_ZNS_2hdEEEEE = linkonce_odr hidden global i32 0
148+
149+
// CHECK-HIDDEN: @_ZN6test733varIXadL_ZNS_2daEEEEE = weak_odr hidden global i32 0
150+
// CHECK-HIDDEN-NEXT: @_ZN6test733varIXadL_ZNS_2dbEEEEE = weak_odr global i32 0
151+
// CHECK-HIDDEN-NEXT: @_ZN6test733varIXadL_ZNS_2dcEEEEE = weak_odr hidden global i32 0
152+
// CHECK-HIDDEN-NEXT: @_ZN6test733varIXadL_ZNS_2haEEEEE = weak_odr hidden global i32 0
153+
// CHECK-HIDDEN-NEXT: @_ZN6test733varIXadL_ZNS_2hbEEEEE = weak_odr global i32 0
154+
// CHECK-HIDDEN-NEXT: @_ZN6test733varIXadL_ZNS_2hcEEEEE = weak_odr hidden global i32 0
155+
// CHECK-HIDDEN: @_ZN6test733varIXadL_ZNS_2ddEEEEE = linkonce_odr hidden global i32 0
156+
// CHECK-HIDDEN-NEXT: @_ZN6test733varIXadL_ZNS_2hdEEEEE = linkonce_odr hidden global i32 0
157+
}
158+
126159
// CHECK: @_ZN5Test425VariableInHiddenNamespaceE = hidden global i32 10
127160
// CHECK: @_ZN5Test71aE = hidden global
128161
// CHECK: @_ZN5Test71bE = global
@@ -977,25 +1010,44 @@ namespace test51 {
9771010
// template. Note that is a case where we disagree with gcc, it produces
9781011
// a default symbol.
9791012

980-
struct HIDDEN foo {
981-
};
982-
DEFAULT foo x, y, z;
1013+
struct HIDDEN foo {};
1014+
DEFAULT foo da, db, dc, dd;
1015+
HIDDEN foo ha, hb, hc, hd;
9831016
template<foo *z>
9841017
void DEFAULT zed() {
9851018
}
986-
template void zed<&x>();
987-
// CHECK-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_1xEEEEEvv
988-
// CHECK-HIDDEN-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_1xEEEEEvv
1019+
template void zed<&da>();
1020+
// CHECK-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2daEEEEEvv(
1021+
// CHECK-HIDDEN-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2daEEEEEvv(
1022+
1023+
template void DEFAULT zed<&db>();
1024+
// CHECK-LABEL: define weak_odr void @_ZN6test513zedIXadL_ZNS_2dbEEEEEvv(
1025+
// CHECK-HIDDEN-LABEL: define weak_odr void @_ZN6test513zedIXadL_ZNS_2dbEEEEEvv(
1026+
1027+
template void HIDDEN zed<&dc>();
1028+
// CHECK-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2dcEEEEEvv(
1029+
// CHECK-HIDDEN-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2dcEEEEEvv(
1030+
1031+
template void zed<&ha>();
1032+
// CHECK-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2haEEEEEvv(
1033+
// CHECK-HIDDEN-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2haEEEEEvv(
1034+
1035+
template void DEFAULT zed<&hb>();
1036+
// CHECK-LABEL: define weak_odr void @_ZN6test513zedIXadL_ZNS_2hbEEEEEvv(
1037+
// CHECK-HIDDEN-LABEL: define weak_odr void @_ZN6test513zedIXadL_ZNS_2hbEEEEEvv(
9891038

990-
template void HIDDEN zed<&y>();
991-
// CHECK-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_1yEEEEEvv(
992-
// CHECK-HIDDEN-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_1yEEEEEvv(
1039+
template void HIDDEN zed<&hc>();
1040+
// CHECK-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2hcEEEEEvv(
1041+
// CHECK-HIDDEN-LABEL: define weak_odr hidden void @_ZN6test513zedIXadL_ZNS_2hcEEEEEvv(
9931042

9941043
void use() {
995-
zed<&z>();
1044+
zed<&dd>();
1045+
zed<&hd>();
9961046
}
997-
// CHECK-LABEL: define linkonce_odr hidden void @_ZN6test513zedIXadL_ZNS_1zEEEEEvv(
998-
// CHECK-HIDDEN-LABEL: define linkonce_odr hidden void @_ZN6test513zedIXadL_ZNS_1zEEEEEvv(
1047+
// CHECK-LABEL: define linkonce_odr hidden void @_ZN6test513zedIXadL_ZNS_2ddEEEEEvv(
1048+
// CHECK-LABEL: define linkonce_odr hidden void @_ZN6test513zedIXadL_ZNS_2hdEEEEEvv(
1049+
// CHECK-HIDDEN-LABEL: define linkonce_odr hidden void @_ZN6test513zedIXadL_ZNS_2ddEEEEEvv(
1050+
// CHECK-HIDDEN-LABEL: define linkonce_odr hidden void @_ZN6test513zedIXadL_ZNS_2hdEEEEEvv(
9991051
}
10001052

10011053
namespace test52 {

0 commit comments

Comments
 (0)