]> git.lizzy.rs Git - rust.git/commitdiff
[LLVM 4.0] Fix CreateCompileUnit
authorMatt Ickstadt <mattico8@gmail.com>
Sat, 11 Feb 2017 21:01:25 +0000 (15:01 -0600)
committerMatt Ickstadt <mattico8@gmail.com>
Sat, 11 Feb 2017 21:15:28 +0000 (15:15 -0600)
src/librustc_llvm/ffi.rs
src/librustc_trans/debuginfo/metadata.rs
src/rustllvm/RustWrapper.cpp

index 5273910d1d954974a3624a279eeb53c281d8f1e2..8a958cf1ac105b6493d19fc56ecb7741960189f0 100644 (file)
@@ -1334,8 +1334,7 @@ pub fn LLVMRustInlineAsm(Ty: TypeRef,
 
     pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: DIBuilderRef,
                                               Lang: c_uint,
-                                              File: *const c_char,
-                                              Dir: *const c_char,
+                                              File: DIFile,
                                               Producer: *const c_char,
                                               isOptimized: bool,
                                               Flags: *const c_char,
index 7578cc74dbf34bf990436ef8a412daaf56c8e99f..21279afb4106b0bed12826b61509083c3fd7d5c4 100644 (file)
@@ -787,17 +787,20 @@ pub fn compile_unit_metadata(scc: &SharedCrateContext,
                            (option_env!("CFG_VERSION")).expect("CFG_VERSION"));
 
     let compile_unit_name = compile_unit_name.as_ptr();
-    let work_dir = path2cstr(&work_dir);
-    let producer = CString::new(producer).unwrap();
+    let work_dir = path2cstr(&work_dir).as_ptr();
+    let producer = CString::new(producer).unwrap().as_ptr();
     let flags = "\0";
     let split_name = "\0";
-    return unsafe {
-        llvm::LLVMRustDIBuilderCreateCompileUnit(
+
+    unsafe {
+        let file_metadata = llvm::LLVMRustDIBuilderCreateFile(
+            debug_context.builder, compile_unit_name, work_dir);
+
+        return llvm::LLVMRustDIBuilderCreateCompileUnit(
             debug_context.builder,
             DW_LANG_RUST,
-            compile_unit_name,
-            work_dir.as_ptr(),
-            producer.as_ptr(),
+            file_metadata,
+            producer,
             sess.opts.optimize != config::OptLevel::No,
             flags.as_ptr() as *const _,
             0,
index 27233a8b075af16fd7fd1b4d4892c620f93b4ef1..40432735911893a94ef09e3db2615fa8720b7a1d 100644 (file)
@@ -474,11 +474,19 @@ extern "C" void LLVMRustDIBuilderFinalize(LLVMRustDIBuilderRef Builder) {
 }
 
 extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateCompileUnit(
-    LLVMRustDIBuilderRef Builder, unsigned Lang, const char *File,
-    const char *Dir, const char *Producer, bool isOptimized, const char *Flags,
+    LLVMRustDIBuilderRef Builder, unsigned Lang, LLVMRustMetadataRef FileRef,
+    const char *Producer, bool isOptimized, const char *Flags,
     unsigned RuntimeVer, const char *SplitName) {
-  return wrap(Builder->createCompileUnit(Lang, File, Dir, Producer, isOptimized,
+  auto *File = unwrapDI<DIFile>(FileRef);
+
+#if LLVM_VERSION_GE(4, 0)
+  return wrap(Builder->createCompileUnit(Lang, File, Producer, isOptimized,
                                          Flags, RuntimeVer, SplitName));
+#else
+  return wrap(Builder->createCompileUnit(Lang, File->getFilename(),
+      File->getDirectory(), Producer, isOptimized,
+      Flags, RuntimeVer, SplitName));
+#endif
 }
 
 extern "C" LLVMRustMetadataRef