Auto merge of #39747 - mattico:fix-llvm4-createcompileunit, r=alexcrichton
[LLVM 4.0] Fix CreateCompileUnit This is largely identical to @dylanmckay's [patch](https://github.com/dylanmckay), except that it doesn't try to use `file_metadata()`. I don't think that is necessary because we don't want the compile unit to be added to `debug_context.created_files`, though I'd like confirmation from someone who knows for sure. If that is needed, I can modify `file_metadata_()` so that it can be used from `compile_unit_metadata()`.
This commit is contained in:
commit
ba7cf7cc5d
|
@ -1334,8 +1334,7 @@ extern "C" {
|
|||
|
||||
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,
|
||||
|
|
|
@ -791,12 +791,15 @@ pub fn compile_unit_metadata(scc: &SharedCrateContext,
|
|||
let producer = CString::new(producer).unwrap();
|
||||
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.as_ptr());
|
||||
|
||||
return llvm::LLVMRustDIBuilderCreateCompileUnit(
|
||||
debug_context.builder,
|
||||
DW_LANG_RUST,
|
||||
compile_unit_name,
|
||||
work_dir.as_ptr(),
|
||||
file_metadata,
|
||||
producer.as_ptr(),
|
||||
sess.opts.optimize != config::OptLevel::No,
|
||||
flags.as_ptr() as *const _,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue