3 use super::metadata
::{unknown_file_metadata, UNKNOWN_LINE_NUMBER}
;
4 use super::utils
::{DIB, debug_context}
;
5 use rustc
::ty
::{self, Instance}
;
8 use crate::llvm
::debuginfo
::DIScope
;
9 use crate::common
::CodegenCx
;
10 use rustc
::hir
::def_id
::DefId
;
11 use rustc
::hir
::map
::DefPathData
;
13 use rustc_data_structures
::small_c_str
::SmallCStr
;
15 pub fn mangled_name_of_instance
<'a
, 'tcx
>(
16 cx
: &CodegenCx
<'a
, 'tcx
>,
17 instance
: Instance
<'tcx
>,
20 tcx
.symbol_name(instance
)
23 pub fn item_namespace(cx
: &CodegenCx
<'ll
, '_
>, def_id
: DefId
) -> &'ll DIScope
{
24 if let Some(&scope
) = debug_context(cx
).namespace_map
.borrow().get(&def_id
) {
28 let def_key
= cx
.tcx
.def_key(def_id
);
29 let parent_scope
= def_key
.parent
.map(|parent
| {
30 item_namespace(cx
, DefId
{
36 let namespace_name
= match def_key
.disambiguated_data
.data
{
37 DefPathData
::CrateRoot
=> cx
.tcx
.crate_name(def_id
.krate
).as_str(),
38 data
=> data
.as_interned_str().as_str()
41 let namespace_name
= SmallCStr
::new(&namespace_name
);
44 llvm
::LLVMRustDIBuilderCreateNameSpace(
47 namespace_name
.as_ptr(),
48 unknown_file_metadata(cx
),
52 debug_context(cx
).namespace_map
.borrow_mut().insert(def_id
, scope
);