Create a safe wrapper around LLVMRustDIBuilderCreateTemplateTypeParameter
This commit is contained in:
parent
f7b4354283
commit
eef70a9db5
2 changed files with 24 additions and 23 deletions
|
@ -1297,16 +1297,7 @@ fn build_generic_type_param_di_nodes<'ll, 'tcx>(
|
|||
kind.as_type().map(|ty| {
|
||||
let actual_type = cx.tcx.normalize_erasing_regions(cx.typing_env(), ty);
|
||||
let actual_type_di_node = type_di_node(cx, actual_type);
|
||||
let name = name.as_str();
|
||||
unsafe {
|
||||
llvm::LLVMRustDIBuilderCreateTemplateTypeParameter(
|
||||
DIB(cx),
|
||||
None,
|
||||
name.as_c_char_ptr(),
|
||||
name.len(),
|
||||
actual_type_di_node,
|
||||
)
|
||||
}
|
||||
cx.create_template_type_parameter(name.as_str(), actual_type_di_node)
|
||||
})
|
||||
})
|
||||
.collect();
|
||||
|
|
|
@ -34,8 +34,8 @@ use crate::builder::Builder;
|
|||
use crate::common::{AsCCharPtr, CodegenCx};
|
||||
use crate::llvm;
|
||||
use crate::llvm::debuginfo::{
|
||||
DIArray, DIBuilderBox, DIFile, DIFlags, DILexicalBlock, DILocation, DISPFlags, DIScope, DIType,
|
||||
DIVariable,
|
||||
DIArray, DIBuilderBox, DIFile, DIFlags, DILexicalBlock, DILocation, DISPFlags, DIScope,
|
||||
DITemplateTypeParameter, DIType, DIVariable,
|
||||
};
|
||||
use crate::value::Value;
|
||||
|
||||
|
@ -251,7 +251,7 @@ struct DebugLoc {
|
|||
col: u32,
|
||||
}
|
||||
|
||||
impl CodegenCx<'_, '_> {
|
||||
impl<'ll> CodegenCx<'ll, '_> {
|
||||
/// Looks up debug source information about a `BytePos`.
|
||||
// FIXME(eddyb) rename this to better indicate it's a duplicate of
|
||||
// `lookup_char_pos` rather than `dbg_loc`, perhaps by making
|
||||
|
@ -279,6 +279,22 @@ impl CodegenCx<'_, '_> {
|
|||
DebugLoc { file, line, col }
|
||||
}
|
||||
}
|
||||
|
||||
fn create_template_type_parameter(
|
||||
&self,
|
||||
name: &str,
|
||||
actual_type_metadata: &'ll DIType,
|
||||
) -> &'ll DITemplateTypeParameter {
|
||||
unsafe {
|
||||
llvm::LLVMRustDIBuilderCreateTemplateTypeParameter(
|
||||
DIB(self),
|
||||
None,
|
||||
name.as_c_char_ptr(),
|
||||
name.len(),
|
||||
actual_type_metadata,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||
|
@ -483,16 +499,10 @@ impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
|||
kind.as_type().map(|ty| {
|
||||
let actual_type = cx.tcx.normalize_erasing_regions(cx.typing_env(), ty);
|
||||
let actual_type_metadata = type_di_node(cx, actual_type);
|
||||
let name = name.as_str();
|
||||
unsafe {
|
||||
Some(llvm::LLVMRustDIBuilderCreateTemplateTypeParameter(
|
||||
DIB(cx),
|
||||
None,
|
||||
name.as_c_char_ptr(),
|
||||
name.len(),
|
||||
actual_type_metadata,
|
||||
))
|
||||
}
|
||||
Some(cx.create_template_type_parameter(
|
||||
name.as_str(),
|
||||
actual_type_metadata,
|
||||
))
|
||||
})
|
||||
})
|
||||
.collect()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue