@@ -123,6 +123,39 @@ namespace test72 {
123
123
// CHECK-NEXT: @_ZN6test723fooIlE4var2IiEE = linkonce_odr global i32 0
124
124
}
125
125
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
+
126
159
// CHECK: @_ZN5Test425VariableInHiddenNamespaceE = hidden global i32 10
127
160
// CHECK: @_ZN5Test71aE = hidden global
128
161
// CHECK: @_ZN5Test71bE = global
@@ -977,25 +1010,44 @@ namespace test51 {
977
1010
// template. Note that is a case where we disagree with gcc, it produces
978
1011
// a default symbol.
979
1012
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 ;
983
1016
template <foo *z>
984
1017
void DEFAULT zed () {
985
1018
}
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(
989
1038
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 (
993
1042
994
1043
void use () {
995
- zed<&z>();
1044
+ zed<&dd>();
1045
+ zed<&hd>();
996
1046
}
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(
999
1051
}
1000
1052
1001
1053
namespace test52 {
0 commit comments