Skip to content

Commit

Permalink
Change DIBuilderCreateEnumerator signature to match LLVM 9
Browse files Browse the repository at this point in the history
No functional changes intended.
  • Loading branch information
tmiasko committed Mar 5, 2020
1 parent 1e17969 commit e54a16c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
16 changes: 10 additions & 6 deletions src/librustc_codegen_llvm/debuginfo/metadata.rs
Expand Up @@ -1779,13 +1779,15 @@ fn prepare_enum_metadata(
.discriminants(cx.tcx)
.zip(&def.variants)
.map(|((_, discr), v)| {
let name = SmallCStr::new(&v.ident.as_str());
let name = v.ident.as_str();
unsafe {
Some(llvm::LLVMRustDIBuilderCreateEnumerator(
DIB(cx),
name.as_ptr(),
name.as_ptr().cast(),
name.len(),
// FIXME: what if enumeration has i128 discriminant?
discr.val as u64,
discr.val as i64,
false, // FIXME: IsUnsigned.
))
}
})
Expand All @@ -1794,13 +1796,15 @@ fn prepare_enum_metadata(
.as_generator()
.variant_range(enum_def_id, cx.tcx)
.map(|variant_index| {
let name = SmallCStr::new(&substs.as_generator().variant_name(variant_index));
let name = substs.as_generator().variant_name(variant_index);
unsafe {
Some(llvm::LLVMRustDIBuilderCreateEnumerator(
DIB(cx),
name.as_ptr(),
name.as_ptr().cast(),
name.len(),
// FIXME: what if enumeration has i128 discriminant?
variant_index.as_usize() as u64,
variant_index.as_usize() as i64,
false, // FIXME: IsUnsigned.
))
}
})
Expand Down
4 changes: 3 additions & 1 deletion src/librustc_codegen_llvm/llvm/ffi.rs
Expand Up @@ -1776,7 +1776,9 @@ extern "C" {
pub fn LLVMRustDIBuilderCreateEnumerator(
Builder: &DIBuilder<'a>,
Name: *const c_char,
Val: u64,
NameLen: size_t,
Value: i64,
IsUnsigned: bool,
) -> &'a DIEnumerator;

pub fn LLVMRustDIBuilderCreateEnumerationType(
Expand Down
8 changes: 4 additions & 4 deletions src/rustllvm/RustWrapper.cpp
Expand Up @@ -891,10 +891,10 @@ extern "C" LLVMValueRef LLVMRustDIBuilderInsertDeclareAtEnd(
unwrap(InsertAtEnd)));
}

extern "C" LLVMMetadataRef
LLVMRustDIBuilderCreateEnumerator(LLVMRustDIBuilderRef Builder,
const char *Name, uint64_t Val) {
return wrap(Builder->createEnumerator(Name, Val));
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerator(
LLVMRustDIBuilderRef Builder, const char *Name, size_t NameLen,
int64_t Value, bool IsUnsigned) {
return wrap(Builder->createEnumerator({Name, NameLen}, Value, IsUnsigned));
}

extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerationType(
Expand Down

0 comments on commit e54a16c

Please sign in to comment.