@@ -34,8 +34,8 @@ use crate::builder::Builder;
34
34
use crate :: common:: { AsCCharPtr , CodegenCx } ;
35
35
use crate :: llvm;
36
36
use crate :: llvm:: debuginfo:: {
37
- DIArray , DIBuilderBox , DIFile , DIFlags , DILexicalBlock , DILocation , DISPFlags , DIScope , DIType ,
38
- DIVariable ,
37
+ DIArray , DIBuilderBox , DIFile , DIFlags , DILexicalBlock , DILocation , DISPFlags , DIScope ,
38
+ DITemplateTypeParameter , DIType , DIVariable ,
39
39
} ;
40
40
use crate :: value:: Value ;
41
41
@@ -251,7 +251,7 @@ struct DebugLoc {
251
251
col : u32 ,
252
252
}
253
253
254
- impl CodegenCx < ' _ , ' _ > {
254
+ impl < ' ll > CodegenCx < ' ll , ' _ > {
255
255
/// Looks up debug source information about a `BytePos`.
256
256
// FIXME(eddyb) rename this to better indicate it's a duplicate of
257
257
// `lookup_char_pos` rather than `dbg_loc`, perhaps by making
@@ -279,6 +279,22 @@ impl CodegenCx<'_, '_> {
279
279
DebugLoc { file, line, col }
280
280
}
281
281
}
282
+
283
+ fn create_template_type_parameter (
284
+ & self ,
285
+ name : & str ,
286
+ actual_type_metadata : & ' ll DIType ,
287
+ ) -> & ' ll DITemplateTypeParameter {
288
+ unsafe {
289
+ llvm:: LLVMRustDIBuilderCreateTemplateTypeParameter (
290
+ DIB ( self ) ,
291
+ None ,
292
+ name. as_c_char_ptr ( ) ,
293
+ name. len ( ) ,
294
+ actual_type_metadata,
295
+ )
296
+ }
297
+ }
282
298
}
283
299
284
300
impl < ' ll , ' tcx > DebugInfoCodegenMethods < ' tcx > for CodegenCx < ' ll , ' tcx > {
@@ -483,16 +499,10 @@ impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for CodegenCx<'ll, 'tcx> {
483
499
kind. as_type ( ) . map ( |ty| {
484
500
let actual_type = cx. tcx . normalize_erasing_regions ( cx. typing_env ( ) , ty) ;
485
501
let actual_type_metadata = type_di_node ( cx, actual_type) ;
486
- let name = name. as_str ( ) ;
487
- unsafe {
488
- Some ( llvm:: LLVMRustDIBuilderCreateTemplateTypeParameter (
489
- DIB ( cx) ,
490
- None ,
491
- name. as_c_char_ptr ( ) ,
492
- name. len ( ) ,
493
- actual_type_metadata,
494
- ) )
495
- }
502
+ Some ( cx. create_template_type_parameter (
503
+ name. as_str ( ) ,
504
+ actual_type_metadata,
505
+ ) )
496
506
} )
497
507
} )
498
508
. collect ( )
0 commit comments