]> git.lizzy.rs Git - rust.git/commitdiff
rustc_codegen_llvm: use safe references for DIBuilder.
authorIrina Popa <irinagpopa@gmail.com>
Tue, 3 Jul 2018 13:02:38 +0000 (16:02 +0300)
committerIrina Popa <irinagpopa@gmail.com>
Mon, 30 Jul 2018 15:36:32 +0000 (18:36 +0300)
src/librustc_codegen_llvm/debuginfo/mod.rs
src/librustc_codegen_llvm/debuginfo/utils.rs
src/librustc_codegen_llvm/llvm/ffi.rs

index 3336e46ea797dbc7e02a0865c31a299cbcbc8b5a..43534b8ec2e031d2b472901bda67aa9bbeacb2b9 100644 (file)
@@ -22,7 +22,7 @@
 
 use llvm;
 use llvm::ValueRef;
-use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilderRef, DISubprogram, DIArray, DIFlags};
+use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags};
 use rustc::hir::CodegenFnAttrFlags;
 use rustc::hir::def_id::{DefId, CrateNum};
 use rustc::ty::subst::{Substs, UnpackedKind};
@@ -70,7 +70,7 @@
 pub struct CrateDebugContext<'a, 'tcx> {
     llcontext: &'a llvm::Context,
     llmod: &'a llvm::Module,
-    builder: DIBuilderRef,
+    builder: &'a DIBuilder,
     created_files: RefCell<FxHashMap<(Symbol, Symbol), DIFile>>,
     created_enum_disr_types: RefCell<FxHashMap<(DefId, layout::Primitive), DIType>>,
 
index 69d457f2188327ec8832ca482a708cb308fa473a..602a64ae3b33a72ed01d33c01bcc76ff08660693 100644 (file)
@@ -17,7 +17,7 @@
 use rustc::ty::DefIdTree;
 
 use llvm;
-use llvm::debuginfo::{DIScope, DIBuilderRef, DIDescriptor_opaque, DIArray};
+use llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor_opaque, DIArray};
 use common::{CodegenCx};
 
 use std::ptr::NonNull;
@@ -37,7 +37,7 @@ pub fn is_node_local_to_unit(cx: &CodegenCx, def_id: DefId) -> bool
 }
 
 #[allow(non_snake_case)]
-pub fn create_DIArray(builder: DIBuilderRef, arr: &[Option<NonNull<DIDescriptor_opaque>>]) -> DIArray {
+pub fn create_DIArray(builder: &DIBuilder, arr: &[Option<NonNull<DIDescriptor_opaque>>]) -> DIArray {
     return unsafe {
         llvm::LLVMRustDIBuilderGetOrCreateArray(builder, arr.as_ptr(), arr.len() as u32)
     };
@@ -55,7 +55,7 @@ pub fn debug_context(cx: &'a CodegenCx<'ll, 'tcx>) -> &'a CrateDebugContext<'a,
 
 #[inline]
 #[allow(non_snake_case)]
-pub fn DIB(cx: &CodegenCx) -> DIBuilderRef {
+pub fn DIB(cx: &CodegenCx<'ll, '_>) -> &'ll DIBuilder {
     cx.dbg_cx.as_ref().unwrap().builder
 }
 
index 532fe1026a9b69a22037bf863bebf6ec6e6c44ec..b202a1bf2f70e35ac2d14efcbfce8d4a1ae51b79 100644 (file)
@@ -15,7 +15,7 @@
 // https://reviews.llvm.org/D26769
 
 use super::debuginfo::{
-    DIBuilderRef, DIDescriptor_opaque, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType_opaque,
+    DIBuilder, DIDescriptor_opaque, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType_opaque,
     DIType, DIBasicType, DIDerivedType, DICompositeType, DIScope_opaque, DIScope, DIVariable,
     DIGlobalVariable, DIArray_opaque, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator,
     DINameSpace, DIFlags,
@@ -433,8 +433,7 @@ pub enum ThreadLocalMode {
 pub mod debuginfo {
     use super::Metadata_opaque;
 
-    extern { pub type DIBuilder_opaque; }
-    pub type DIBuilderRef = *mut DIBuilder_opaque;
+    extern { pub type DIBuilder; }
 
     pub type DIDescriptor_opaque = Metadata_opaque;
     pub type DIDescriptor = *mut DIDescriptor_opaque;
@@ -1369,13 +1368,13 @@ pub fn LLVMRustInlineAsm(Ty: &Type,
 
     pub fn LLVMRustMetadataAsValue(C: &Context, MD: MetadataRef) -> ValueRef;
 
-    pub fn LLVMRustDIBuilderCreate(M: &Module) -> DIBuilderRef;
+    pub fn LLVMRustDIBuilderCreate(M: &Module) -> &DIBuilder;
 
-    pub fn LLVMRustDIBuilderDispose(Builder: DIBuilderRef);
+    pub fn LLVMRustDIBuilderDispose(Builder: &DIBuilder);
 
-    pub fn LLVMRustDIBuilderFinalize(Builder: DIBuilderRef);
+    pub fn LLVMRustDIBuilderFinalize(Builder: &DIBuilder);
 
-    pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: &DIBuilder,
                                               Lang: c_uint,
                                               File: DIFile,
                                               Producer: *const c_char,
@@ -1385,17 +1384,17 @@ pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: DIBuilderRef,
                                               SplitName: *const c_char)
                                               -> DIDescriptor;
 
-    pub fn LLVMRustDIBuilderCreateFile(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateFile(Builder: &DIBuilder,
                                        Filename: *const c_char,
                                        Directory: *const c_char)
                                        -> DIFile;
 
-    pub fn LLVMRustDIBuilderCreateSubroutineType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateSubroutineType(Builder: &DIBuilder,
                                                  File: DIFile,
                                                  ParameterTypes: DIArray)
                                                  -> DICompositeType;
 
-    pub fn LLVMRustDIBuilderCreateFunction(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateFunction(Builder: &DIBuilder,
                                            Scope: DIDescriptor,
                                            Name: *const c_char,
                                            LinkageName: *const c_char,
@@ -1412,21 +1411,21 @@ pub fn LLVMRustDIBuilderCreateFunction(Builder: DIBuilderRef,
                                            Decl: Option<NonNull<DIDescriptor_opaque>>)
                                            -> DISubprogram;
 
-    pub fn LLVMRustDIBuilderCreateBasicType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateBasicType(Builder: &DIBuilder,
                                             Name: *const c_char,
                                             SizeInBits: u64,
                                             AlignInBits: u32,
                                             Encoding: c_uint)
                                             -> DIBasicType;
 
-    pub fn LLVMRustDIBuilderCreatePointerType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreatePointerType(Builder: &DIBuilder,
                                               PointeeTy: DIType,
                                               SizeInBits: u64,
                                               AlignInBits: u32,
                                               Name: *const c_char)
                                               -> DIDerivedType;
 
-    pub fn LLVMRustDIBuilderCreateStructType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateStructType(Builder: &DIBuilder,
                                              Scope: Option<NonNull<DIDescriptor_opaque>>,
                                              Name: *const c_char,
                                              File: DIFile,
@@ -1441,7 +1440,7 @@ pub fn LLVMRustDIBuilderCreateStructType(Builder: DIBuilderRef,
                                              UniqueId: *const c_char)
                                              -> DICompositeType;
 
-    pub fn LLVMRustDIBuilderCreateMemberType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateMemberType(Builder: &DIBuilder,
                                              Scope: DIDescriptor,
                                              Name: *const c_char,
                                              File: DIFile,
@@ -1453,19 +1452,19 @@ pub fn LLVMRustDIBuilderCreateMemberType(Builder: DIBuilderRef,
                                              Ty: DIType)
                                              -> DIDerivedType;
 
-    pub fn LLVMRustDIBuilderCreateLexicalBlock(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateLexicalBlock(Builder: &DIBuilder,
                                                Scope: DIScope,
                                                File: DIFile,
                                                Line: c_uint,
                                                Col: c_uint)
                                                -> DILexicalBlock;
 
-    pub fn LLVMRustDIBuilderCreateLexicalBlockFile(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateLexicalBlockFile(Builder: &DIBuilder,
                                                    Scope: DIScope,
                                                    File: DIFile)
                                                    -> DILexicalBlock;
 
-    pub fn LLVMRustDIBuilderCreateStaticVariable(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateStaticVariable(Builder: &DIBuilder,
                                                  Context: Option<NonNull<DIScope_opaque>>,
                                                  Name: *const c_char,
                                                  LinkageName: *const c_char,
@@ -1478,7 +1477,7 @@ pub fn LLVMRustDIBuilderCreateStaticVariable(Builder: DIBuilderRef,
                                                  AlignInBits: u32)
                                                  -> DIGlobalVariable;
 
-    pub fn LLVMRustDIBuilderCreateVariable(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateVariable(Builder: &DIBuilder,
                                            Tag: c_uint,
                                            Scope: DIDescriptor,
                                            Name: *const c_char,
@@ -1491,31 +1490,31 @@ pub fn LLVMRustDIBuilderCreateVariable(Builder: DIBuilderRef,
                                            AlignInBits: u32)
                                            -> DIVariable;
 
-    pub fn LLVMRustDIBuilderCreateArrayType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateArrayType(Builder: &DIBuilder,
                                             Size: u64,
                                             AlignInBits: u32,
                                             Ty: DIType,
                                             Subscripts: DIArray)
                                             -> DIType;
 
-    pub fn LLVMRustDIBuilderCreateVectorType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateVectorType(Builder: &DIBuilder,
                                              Size: u64,
                                              AlignInBits: u32,
                                              Ty: DIType,
                                              Subscripts: DIArray)
                                              -> DIType;
 
-    pub fn LLVMRustDIBuilderGetOrCreateSubrange(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderGetOrCreateSubrange(Builder: &DIBuilder,
                                                 Lo: i64,
                                                 Count: i64)
                                                 -> DISubrange;
 
-    pub fn LLVMRustDIBuilderGetOrCreateArray(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderGetOrCreateArray(Builder: &DIBuilder,
                                              Ptr: *const Option<NonNull<DIDescriptor_opaque>>,
                                              Count: c_uint)
                                              -> DIArray;
 
-    pub fn LLVMRustDIBuilderInsertDeclareAtEnd(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderInsertDeclareAtEnd(Builder: &DIBuilder,
                                                Val: ValueRef,
                                                VarInfo: DIVariable,
                                                AddrOps: *const i64,
@@ -1524,12 +1523,12 @@ pub fn LLVMRustDIBuilderInsertDeclareAtEnd(Builder: DIBuilderRef,
                                                InsertAtEnd: BasicBlockRef)
                                                -> ValueRef;
 
-    pub fn LLVMRustDIBuilderCreateEnumerator(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateEnumerator(Builder: &DIBuilder,
                                              Name: *const c_char,
                                              Val: u64)
                                              -> DIEnumerator;
 
-    pub fn LLVMRustDIBuilderCreateEnumerationType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateEnumerationType(Builder: &DIBuilder,
                                                   Scope: DIScope,
                                                   Name: *const c_char,
                                                   File: DIFile,
@@ -1540,7 +1539,7 @@ pub fn LLVMRustDIBuilderCreateEnumerationType(Builder: DIBuilderRef,
                                                   ClassType: DIType)
                                                   -> DIType;
 
-    pub fn LLVMRustDIBuilderCreateUnionType(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateUnionType(Builder: &DIBuilder,
                                             Scope: DIScope,
                                             Name: *const c_char,
                                             File: DIFile,
@@ -1555,7 +1554,7 @@ pub fn LLVMRustDIBuilderCreateUnionType(Builder: DIBuilderRef,
 
     pub fn LLVMSetUnnamedAddr(GlobalVar: ValueRef, UnnamedAddr: Bool);
 
-    pub fn LLVMRustDIBuilderCreateTemplateTypeParameter(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateTemplateTypeParameter(Builder: &DIBuilder,
                                                         Scope: Option<NonNull<DIScope_opaque>>,
                                                         Name: *const c_char,
                                                         Ty: DIType,
@@ -1565,13 +1564,13 @@ pub fn LLVMRustDIBuilderCreateTemplateTypeParameter(Builder: DIBuilderRef,
                                                         -> DITemplateTypeParameter;
 
 
-    pub fn LLVMRustDIBuilderCreateNameSpace(Builder: DIBuilderRef,
+    pub fn LLVMRustDIBuilderCreateNameSpace(Builder: &DIBuilder,
                                             Scope: Option<NonNull<DIScope_opaque>>,
                                             Name: *const c_char,
                                             File: DIFile,
                                             LineNo: c_uint)
                                             -> DINameSpace;
-    pub fn LLVMRustDICompositeTypeSetTypeArray(Builder: DIBuilderRef,
+    pub fn LLVMRustDICompositeTypeSetTypeArray(Builder: &DIBuilder,
                                                CompositeType: DIType,
                                                TypeArray: DIArray);