|
66 | 66 |
|
67 | 67 | ; ASM: .section .debug_gnu_pubnames
|
68 | 68 | ; ASM: .byte 32 # Attributes: VARIABLE, EXTERNAL
|
69 |
| -; ASM-NEXT: .asciz "ns::global_namespace_variable" # External Name |
| 69 | +; ASM-NEXT: .asciz "C::static_member_variable" # External Name |
70 | 70 | ; ASM: .byte 32 # Attributes: VARIABLE, EXTERNAL
|
71 | 71 | ; ASM-NEXT: .asciz "global_variable" # External Name
|
| 72 | +; ASM: .byte 32 # Attributes: VARIABLE, EXTERNAL |
| 73 | +; ASM-NEXT: .asciz "ns::global_namespace_variable" # External Name |
72 | 74 |
|
73 | 75 | ; ASM: .section .debug_gnu_pubtypes
|
74 | 76 | ; ASM: .byte 16 # Attributes: TYPE, EXTERNAL
|
|
196 | 198 | ; CHECK-LABEL: .debug_gnu_pubnames contents:
|
197 | 199 | ; CHECK-NEXT: length = {{.*}}, version = 0x0002, unit_offset = 0x00000000, unit_size = {{.*}}
|
198 | 200 | ; CHECK-NEXT: Offset Linkage Kind Name
|
199 |
| -; CHECK-NEXT: [[ANON_INNER_B]] STATIC VARIABLE "(anonymous namespace)::inner::b" |
200 |
| -; CHECK-NEXT: [[MEM_FUNC]] EXTERNAL FUNCTION "C::member_function" |
201 |
| -; CHECK-NEXT: [[OUTER]] EXTERNAL TYPE "outer" |
202 |
| -; CHECK-NEXT: [[GLOB_NS_VAR]] EXTERNAL VARIABLE "ns::global_namespace_variable" |
| 201 | +; CHECK-NEXT: [[STATIC_MEM_VAR]] EXTERNAL VARIABLE "C::static_member_variable" |
203 | 202 | ; CHECK-NEXT: [[GLOB_VAR]] EXTERNAL VARIABLE "global_variable"
|
204 |
| -; CHECK-NEXT: [[UNNAMED_ENUM_ENUMERATOR]] STATIC VARIABLE "unnamed_enum_enumerator" |
205 |
| -; CHECK-NEXT: [[GLOBAL_F7]] EXTERNAL FUNCTION "f7" |
206 |
| -; CHECK-NEXT: [[OUTER_ANON]] EXTERNAL TYPE "outer::(anonymous namespace)" |
207 |
| -; FIXME: GCC produces enumerators as EXTERNAL, not STATIC |
208 |
| -; CHECK-NEXT: [[NAMED_ENUM_CLASS_ENUMERATOR]] STATIC VARIABLE "named_enum_class_enumerator" |
209 |
| -; CHECK-NEXT: [[GLOBAL_FUNC]] EXTERNAL FUNCTION "global_function" |
210 |
| -; CHECK-NEXT: [[GLOB_NS_FUNC]] EXTERNAL FUNCTION "ns::global_namespace_function" |
211 | 203 | ; CHECK-NEXT: [[NS]] EXTERNAL TYPE "ns"
|
212 |
| -; CHECK-NEXT: [[NAMED_ENUM_ENUMERATOR]] STATIC VARIABLE "named_enum_enumerator" |
213 |
| -; CHECK-NEXT: [[ANON]] EXTERNAL TYPE "(anonymous namespace)" |
214 |
| -; CHECK-NEXT: [[OUTER_ANON_C]] STATIC VARIABLE "outer::(anonymous namespace)::c" |
| 204 | +; CHECK-NEXT: [[GLOB_NS_VAR]] EXTERNAL VARIABLE "ns::global_namespace_variable" |
215 | 205 | ; CHECK-NEXT: [[D_VAR]] EXTERNAL VARIABLE "ns::d"
|
216 |
| -; CHECK-NEXT: [[STATIC_MEM_FUNC]] EXTERNAL FUNCTION "C::static_member_function" |
217 |
| -; CHECK-NEXT: [[STATIC_MEM_VAR]] EXTERNAL VARIABLE "C::static_member_variable" |
218 |
| -; CHECK-NEXT: [[ANON_I]] STATIC VARIABLE "(anonymous namespace)::i" |
219 |
| -; CHECK-NEXT: [[ANON_INNER]] EXTERNAL TYPE "(anonymous namespace)::inner" |
| 206 | +; CHECK-NEXT: [[GLOB_NS_FUNC]] EXTERNAL FUNCTION "ns::global_namespace_function" |
220 | 207 | ; CHECK-NEXT: [[F3]] EXTERNAL FUNCTION "f3"
|
221 | 208 | ; GCC Doesn't put local statics in pubnames, but it seems not unreasonable and
|
222 | 209 | ; comes out naturally from LLVM's implementation, so I'm OK with it for now. If
|
223 | 210 | ; it's demonstrated that this is a major size concern or degrades debug info
|
224 | 211 | ; consumer behavior, feel free to change it.
|
225 | 212 | ; CHECK-NEXT: [[F3_Z]] STATIC VARIABLE "f3::z"
|
| 213 | +; CHECK-NEXT: [[ANON]] EXTERNAL TYPE "(anonymous namespace)" |
| 214 | +; CHECK-NEXT: [[ANON_I]] STATIC VARIABLE "(anonymous namespace)::i" |
| 215 | +; CHECK-NEXT: [[ANON_INNER]] EXTERNAL TYPE "(anonymous namespace)::inner" |
| 216 | +; CHECK-NEXT: [[ANON_INNER_B]] STATIC VARIABLE "(anonymous namespace)::inner::b" |
| 217 | +; CHECK-NEXT: [[OUTER]] EXTERNAL TYPE "outer" |
| 218 | +; CHECK-NEXT: [[OUTER_ANON]] EXTERNAL TYPE "outer::(anonymous namespace)" |
| 219 | +; CHECK-NEXT: [[OUTER_ANON_C]] STATIC VARIABLE "outer::(anonymous namespace)::c" |
| 220 | +; CHECK-NEXT: [[UNNAMED_ENUM_ENUMERATOR]] STATIC VARIABLE "unnamed_enum_enumerator" |
| 221 | +; CHECK-NEXT: [[NAMED_ENUM_ENUMERATOR]] STATIC VARIABLE "named_enum_enumerator" |
| 222 | +; CHECK-NEXT: [[NAMED_ENUM_CLASS_ENUMERATOR]] STATIC VARIABLE "named_enum_class_enumerator" |
| 223 | +; CHECK-NEXT: [[MEM_FUNC]] EXTERNAL FUNCTION "C::member_function" |
| 224 | +; CHECK-NEXT: [[STATIC_MEM_FUNC]] EXTERNAL FUNCTION "C::static_member_function" |
| 225 | +; FIXME: GCC produces enumerators as EXTERNAL, not STATIC |
| 226 | +; CHECK-NEXT: [[GLOBAL_FUNC]] EXTERNAL FUNCTION "global_function" |
| 227 | +; CHECK-NEXT: [[GLOBAL_F7]] EXTERNAL FUNCTION "f7" |
226 | 228 |
|
227 | 229 | ; CHECK-LABEL: debug_gnu_pubtypes contents:
|
228 | 230 | ; CHECK: Offset Linkage Kind Name
|
229 |
| -; CHECK-NEXT: [[INT]] STATIC TYPE "int" |
230 | 231 | ; CHECK-NEXT: [[C]] EXTERNAL TYPE "C"
|
| 232 | +; CHECK-NEXT: [[INT]] STATIC TYPE "int" |
| 233 | +; CHECK-NEXT: [[D]] EXTERNAL TYPE "ns::D" |
231 | 234 | ; CHECK-NEXT: [[UNSIGNED_INT]] STATIC TYPE "unsigned int"
|
232 | 235 | ; CHECK-NEXT: [[NAMED_ENUM]] EXTERNAL TYPE "named_enum"
|
233 | 236 | ; CHECK-NEXT: [[NAMED_ENUM_CLASS]] EXTERNAL TYPE "named_enum_class"
|
234 |
| -; CHECK-NEXT: [[D]] EXTERNAL TYPE "ns::D" |
235 | 237 |
|
236 | 238 | %struct.C = type { i8 }
|
237 | 239 | %"struct.ns::D" = type { i32 }
|
|
0 commit comments