Skip to content

Commit 6d0d82c

Browse files
committed
rustc_codegen_llvm: use safe references for DIBuilder.
1 parent 2dbde55 commit 6d0d82c

File tree

3 files changed

+33
-34
lines changed

3 files changed

+33
-34
lines changed

src/librustc_codegen_llvm/debuginfo/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use self::source_loc::InternalDebugLocation::{self, UnknownLocation};
2222

2323
use llvm;
2424
use llvm::ValueRef;
25-
use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilderRef, DISubprogram, DIArray, DIFlags};
25+
use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags};
2626
use rustc::hir::CodegenFnAttrFlags;
2727
use rustc::hir::def_id::{DefId, CrateNum};
2828
use rustc::ty::subst::{Substs, UnpackedKind};
@@ -70,7 +70,7 @@ const DW_TAG_arg_variable: c_uint = 0x101;
7070
pub struct CrateDebugContext<'a, 'tcx> {
7171
llcontext: &'a llvm::Context,
7272
llmod: &'a llvm::Module,
73-
builder: DIBuilderRef,
73+
builder: &'a DIBuilder,
7474
created_files: RefCell<FxHashMap<(Symbol, Symbol), DIFile>>,
7575
created_enum_disr_types: RefCell<FxHashMap<(DefId, layout::Primitive), DIType>>,
7676

src/librustc_codegen_llvm/debuginfo/utils.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use rustc::hir::def_id::DefId;
1717
use rustc::ty::DefIdTree;
1818

1919
use llvm;
20-
use llvm::debuginfo::{DIScope, DIBuilderRef, DIDescriptor_opaque, DIArray};
20+
use llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor_opaque, DIArray};
2121
use common::{CodegenCx};
2222

2323
use std::ptr::NonNull;
@@ -37,7 +37,7 @@ pub fn is_node_local_to_unit(cx: &CodegenCx, def_id: DefId) -> bool
3737
}
3838

3939
#[allow(non_snake_case)]
40-
pub fn create_DIArray(builder: DIBuilderRef, arr: &[Option<NonNull<DIDescriptor_opaque>>]) -> DIArray {
40+
pub fn create_DIArray(builder: &DIBuilder, arr: &[Option<NonNull<DIDescriptor_opaque>>]) -> DIArray {
4141
return unsafe {
4242
llvm::LLVMRustDIBuilderGetOrCreateArray(builder, arr.as_ptr(), arr.len() as u32)
4343
};
@@ -55,7 +55,7 @@ pub fn debug_context(cx: &'a CodegenCx<'ll, 'tcx>) -> &'a CrateDebugContext<'a,
5555

5656
#[inline]
5757
#[allow(non_snake_case)]
58-
pub fn DIB(cx: &CodegenCx) -> DIBuilderRef {
58+
pub fn DIB(cx: &CodegenCx<'ll, '_>) -> &'ll DIBuilder {
5959
cx.dbg_cx.as_ref().unwrap().builder
6060
}
6161

src/librustc_codegen_llvm/llvm/ffi.rs

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// https://reviews.llvm.org/D26769
1616

1717
use super::debuginfo::{
18-
DIBuilderRef, DIDescriptor_opaque, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType_opaque,
18+
DIBuilder, DIDescriptor_opaque, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType_opaque,
1919
DIType, DIBasicType, DIDerivedType, DICompositeType, DIScope_opaque, DIScope, DIVariable,
2020
DIGlobalVariable, DIArray_opaque, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator,
2121
DINameSpace, DIFlags,
@@ -433,8 +433,7 @@ pub type InlineAsmDiagHandler = unsafe extern "C" fn(SMDiagnosticRef, *const c_v
433433
pub mod debuginfo {
434434
use super::Metadata_opaque;
435435

436-
extern { pub type DIBuilder_opaque; }
437-
pub type DIBuilderRef = *mut DIBuilder_opaque;
436+
extern { pub type DIBuilder; }
438437

439438
pub type DIDescriptor_opaque = Metadata_opaque;
440439
pub type DIDescriptor = *mut DIDescriptor_opaque;
@@ -1369,13 +1368,13 @@ extern "C" {
13691368

13701369
pub fn LLVMRustMetadataAsValue(C: &Context, MD: MetadataRef) -> ValueRef;
13711370

1372-
pub fn LLVMRustDIBuilderCreate(M: &Module) -> DIBuilderRef;
1371+
pub fn LLVMRustDIBuilderCreate(M: &Module) -> &DIBuilder;
13731372

1374-
pub fn LLVMRustDIBuilderDispose(Builder: DIBuilderRef);
1373+
pub fn LLVMRustDIBuilderDispose(Builder: &DIBuilder);
13751374

1376-
pub fn LLVMRustDIBuilderFinalize(Builder: DIBuilderRef);
1375+
pub fn LLVMRustDIBuilderFinalize(Builder: &DIBuilder);
13771376

1378-
pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: DIBuilderRef,
1377+
pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: &DIBuilder,
13791378
Lang: c_uint,
13801379
File: DIFile,
13811380
Producer: *const c_char,
@@ -1385,17 +1384,17 @@ extern "C" {
13851384
SplitName: *const c_char)
13861385
-> DIDescriptor;
13871386

1388-
pub fn LLVMRustDIBuilderCreateFile(Builder: DIBuilderRef,
1387+
pub fn LLVMRustDIBuilderCreateFile(Builder: &DIBuilder,
13891388
Filename: *const c_char,
13901389
Directory: *const c_char)
13911390
-> DIFile;
13921391

1393-
pub fn LLVMRustDIBuilderCreateSubroutineType(Builder: DIBuilderRef,
1392+
pub fn LLVMRustDIBuilderCreateSubroutineType(Builder: &DIBuilder,
13941393
File: DIFile,
13951394
ParameterTypes: DIArray)
13961395
-> DICompositeType;
13971396

1398-
pub fn LLVMRustDIBuilderCreateFunction(Builder: DIBuilderRef,
1397+
pub fn LLVMRustDIBuilderCreateFunction(Builder: &DIBuilder,
13991398
Scope: DIDescriptor,
14001399
Name: *const c_char,
14011400
LinkageName: *const c_char,
@@ -1412,21 +1411,21 @@ extern "C" {
14121411
Decl: Option<NonNull<DIDescriptor_opaque>>)
14131412
-> DISubprogram;
14141413

1415-
pub fn LLVMRustDIBuilderCreateBasicType(Builder: DIBuilderRef,
1414+
pub fn LLVMRustDIBuilderCreateBasicType(Builder: &DIBuilder,
14161415
Name: *const c_char,
14171416
SizeInBits: u64,
14181417
AlignInBits: u32,
14191418
Encoding: c_uint)
14201419
-> DIBasicType;
14211420

1422-
pub fn LLVMRustDIBuilderCreatePointerType(Builder: DIBuilderRef,
1421+
pub fn LLVMRustDIBuilderCreatePointerType(Builder: &DIBuilder,
14231422
PointeeTy: DIType,
14241423
SizeInBits: u64,
14251424
AlignInBits: u32,
14261425
Name: *const c_char)
14271426
-> DIDerivedType;
14281427

1429-
pub fn LLVMRustDIBuilderCreateStructType(Builder: DIBuilderRef,
1428+
pub fn LLVMRustDIBuilderCreateStructType(Builder: &DIBuilder,
14301429
Scope: Option<NonNull<DIDescriptor_opaque>>,
14311430
Name: *const c_char,
14321431
File: DIFile,
@@ -1441,7 +1440,7 @@ extern "C" {
14411440
UniqueId: *const c_char)
14421441
-> DICompositeType;
14431442

1444-
pub fn LLVMRustDIBuilderCreateMemberType(Builder: DIBuilderRef,
1443+
pub fn LLVMRustDIBuilderCreateMemberType(Builder: &DIBuilder,
14451444
Scope: DIDescriptor,
14461445
Name: *const c_char,
14471446
File: DIFile,
@@ -1453,19 +1452,19 @@ extern "C" {
14531452
Ty: DIType)
14541453
-> DIDerivedType;
14551454

1456-
pub fn LLVMRustDIBuilderCreateLexicalBlock(Builder: DIBuilderRef,
1455+
pub fn LLVMRustDIBuilderCreateLexicalBlock(Builder: &DIBuilder,
14571456
Scope: DIScope,
14581457
File: DIFile,
14591458
Line: c_uint,
14601459
Col: c_uint)
14611460
-> DILexicalBlock;
14621461

1463-
pub fn LLVMRustDIBuilderCreateLexicalBlockFile(Builder: DIBuilderRef,
1462+
pub fn LLVMRustDIBuilderCreateLexicalBlockFile(Builder: &DIBuilder,
14641463
Scope: DIScope,
14651464
File: DIFile)
14661465
-> DILexicalBlock;
14671466

1468-
pub fn LLVMRustDIBuilderCreateStaticVariable(Builder: DIBuilderRef,
1467+
pub fn LLVMRustDIBuilderCreateStaticVariable(Builder: &DIBuilder,
14691468
Context: Option<NonNull<DIScope_opaque>>,
14701469
Name: *const c_char,
14711470
LinkageName: *const c_char,
@@ -1478,7 +1477,7 @@ extern "C" {
14781477
AlignInBits: u32)
14791478
-> DIGlobalVariable;
14801479

1481-
pub fn LLVMRustDIBuilderCreateVariable(Builder: DIBuilderRef,
1480+
pub fn LLVMRustDIBuilderCreateVariable(Builder: &DIBuilder,
14821481
Tag: c_uint,
14831482
Scope: DIDescriptor,
14841483
Name: *const c_char,
@@ -1491,31 +1490,31 @@ extern "C" {
14911490
AlignInBits: u32)
14921491
-> DIVariable;
14931492

1494-
pub fn LLVMRustDIBuilderCreateArrayType(Builder: DIBuilderRef,
1493+
pub fn LLVMRustDIBuilderCreateArrayType(Builder: &DIBuilder,
14951494
Size: u64,
14961495
AlignInBits: u32,
14971496
Ty: DIType,
14981497
Subscripts: DIArray)
14991498
-> DIType;
15001499

1501-
pub fn LLVMRustDIBuilderCreateVectorType(Builder: DIBuilderRef,
1500+
pub fn LLVMRustDIBuilderCreateVectorType(Builder: &DIBuilder,
15021501
Size: u64,
15031502
AlignInBits: u32,
15041503
Ty: DIType,
15051504
Subscripts: DIArray)
15061505
-> DIType;
15071506

1508-
pub fn LLVMRustDIBuilderGetOrCreateSubrange(Builder: DIBuilderRef,
1507+
pub fn LLVMRustDIBuilderGetOrCreateSubrange(Builder: &DIBuilder,
15091508
Lo: i64,
15101509
Count: i64)
15111510
-> DISubrange;
15121511

1513-
pub fn LLVMRustDIBuilderGetOrCreateArray(Builder: DIBuilderRef,
1512+
pub fn LLVMRustDIBuilderGetOrCreateArray(Builder: &DIBuilder,
15141513
Ptr: *const Option<NonNull<DIDescriptor_opaque>>,
15151514
Count: c_uint)
15161515
-> DIArray;
15171516

1518-
pub fn LLVMRustDIBuilderInsertDeclareAtEnd(Builder: DIBuilderRef,
1517+
pub fn LLVMRustDIBuilderInsertDeclareAtEnd(Builder: &DIBuilder,
15191518
Val: ValueRef,
15201519
VarInfo: DIVariable,
15211520
AddrOps: *const i64,
@@ -1524,12 +1523,12 @@ extern "C" {
15241523
InsertAtEnd: BasicBlockRef)
15251524
-> ValueRef;
15261525

1527-
pub fn LLVMRustDIBuilderCreateEnumerator(Builder: DIBuilderRef,
1526+
pub fn LLVMRustDIBuilderCreateEnumerator(Builder: &DIBuilder,
15281527
Name: *const c_char,
15291528
Val: u64)
15301529
-> DIEnumerator;
15311530

1532-
pub fn LLVMRustDIBuilderCreateEnumerationType(Builder: DIBuilderRef,
1531+
pub fn LLVMRustDIBuilderCreateEnumerationType(Builder: &DIBuilder,
15331532
Scope: DIScope,
15341533
Name: *const c_char,
15351534
File: DIFile,
@@ -1540,7 +1539,7 @@ extern "C" {
15401539
ClassType: DIType)
15411540
-> DIType;
15421541

1543-
pub fn LLVMRustDIBuilderCreateUnionType(Builder: DIBuilderRef,
1542+
pub fn LLVMRustDIBuilderCreateUnionType(Builder: &DIBuilder,
15441543
Scope: DIScope,
15451544
Name: *const c_char,
15461545
File: DIFile,
@@ -1555,7 +1554,7 @@ extern "C" {
15551554

15561555
pub fn LLVMSetUnnamedAddr(GlobalVar: ValueRef, UnnamedAddr: Bool);
15571556

1558-
pub fn LLVMRustDIBuilderCreateTemplateTypeParameter(Builder: DIBuilderRef,
1557+
pub fn LLVMRustDIBuilderCreateTemplateTypeParameter(Builder: &DIBuilder,
15591558
Scope: Option<NonNull<DIScope_opaque>>,
15601559
Name: *const c_char,
15611560
Ty: DIType,
@@ -1565,13 +1564,13 @@ extern "C" {
15651564
-> DITemplateTypeParameter;
15661565

15671566

1568-
pub fn LLVMRustDIBuilderCreateNameSpace(Builder: DIBuilderRef,
1567+
pub fn LLVMRustDIBuilderCreateNameSpace(Builder: &DIBuilder,
15691568
Scope: Option<NonNull<DIScope_opaque>>,
15701569
Name: *const c_char,
15711570
File: DIFile,
15721571
LineNo: c_uint)
15731572
-> DINameSpace;
1574-
pub fn LLVMRustDICompositeTypeSetTypeArray(Builder: DIBuilderRef,
1573+
pub fn LLVMRustDICompositeTypeSetTypeArray(Builder: &DIBuilder,
15751574
CompositeType: DIType,
15761575
TypeArray: DIArray);
15771576

0 commit comments

Comments
 (0)