提交 68fff625 编写于 作者: M Matt Ickstadt

[LLVM 4.0] Fix CreateCompileUnit

上级 064a0ee1
...@@ -1334,8 +1334,7 @@ pub fn LLVMRustInlineAsm(Ty: TypeRef, ...@@ -1334,8 +1334,7 @@ pub fn LLVMRustInlineAsm(Ty: TypeRef,
pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: DIBuilderRef, pub fn LLVMRustDIBuilderCreateCompileUnit(Builder: DIBuilderRef,
Lang: c_uint, Lang: c_uint,
File: *const c_char, File: DIFile,
Dir: *const c_char,
Producer: *const c_char, Producer: *const c_char,
isOptimized: bool, isOptimized: bool,
Flags: *const c_char, Flags: *const c_char,
......
...@@ -787,17 +787,20 @@ pub fn compile_unit_metadata(scc: &SharedCrateContext, ...@@ -787,17 +787,20 @@ pub fn compile_unit_metadata(scc: &SharedCrateContext,
(option_env!("CFG_VERSION")).expect("CFG_VERSION")); (option_env!("CFG_VERSION")).expect("CFG_VERSION"));
let compile_unit_name = compile_unit_name.as_ptr(); let compile_unit_name = compile_unit_name.as_ptr();
let work_dir = path2cstr(&work_dir); let work_dir = path2cstr(&work_dir).as_ptr();
let producer = CString::new(producer).unwrap(); let producer = CString::new(producer).unwrap().as_ptr();
let flags = "\0"; let flags = "\0";
let split_name = "\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, debug_context.builder,
DW_LANG_RUST, DW_LANG_RUST,
compile_unit_name, file_metadata,
work_dir.as_ptr(), producer,
producer.as_ptr(),
sess.opts.optimize != config::OptLevel::No, sess.opts.optimize != config::OptLevel::No,
flags.as_ptr() as *const _, flags.as_ptr() as *const _,
0, 0,
......
...@@ -474,11 +474,19 @@ extern "C" void LLVMRustDIBuilderFinalize(LLVMRustDIBuilderRef Builder) { ...@@ -474,11 +474,19 @@ extern "C" void LLVMRustDIBuilderFinalize(LLVMRustDIBuilderRef Builder) {
} }
extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateCompileUnit( extern "C" LLVMRustMetadataRef LLVMRustDIBuilderCreateCompileUnit(
LLVMRustDIBuilderRef Builder, unsigned Lang, const char *File, LLVMRustDIBuilderRef Builder, unsigned Lang, LLVMRustMetadataRef FileRef,
const char *Dir, const char *Producer, bool isOptimized, const char *Flags, const char *Producer, bool isOptimized, const char *Flags,
unsigned RuntimeVer, const char *SplitName) { 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)); Flags, RuntimeVer, SplitName));
#else
return wrap(Builder->createCompileUnit(Lang, File->getFilename(),
File->getDirectory(), Producer, isOptimized,
Flags, RuntimeVer, SplitName));
#endif
} }
extern "C" LLVMRustMetadataRef extern "C" LLVMRustMetadataRef
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册