Skip to content

Commit 4bf0765

Browse files
committed
Use LLVMDIBuilderCreateStructType
1 parent e539f35 commit 4bf0765

File tree

3 files changed

+30
-43
lines changed

3 files changed

+30
-43
lines changed

compiler/rustc_codegen_llvm/src/debuginfo/metadata/type_map.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use rustc_middle::bug;
99
use rustc_middle::ty::{self, PolyExistentialTraitRef, Ty, TyCtxt};
1010

1111
use super::{DefinitionLocation, SmallVec, UNKNOWN_LINE_NUMBER, unknown_file_metadata};
12-
use crate::common::{AsCCharPtr, CodegenCx};
12+
use crate::common::CodegenCx;
1313
use crate::debuginfo::utils::{DIB, create_DIArray, debug_context};
1414
use crate::llvm::debuginfo::{DIFlags, DIScope, DIType};
1515
use crate::llvm::{self};
@@ -191,7 +191,6 @@ pub(super) fn stub<'ll, 'tcx>(
191191
containing_scope: Option<&'ll DIScope>,
192192
flags: DIFlags,
193193
) -> StubInfo<'ll, 'tcx> {
194-
let empty_array = create_DIArray(DIB(cx), &[]);
195194
let unique_type_id_str = unique_type_id.generate_unique_id_string(cx.tcx);
196195

197196
let (file_metadata, line_number) = if let Some(def_location) = def_location {
@@ -207,21 +206,22 @@ pub(super) fn stub<'ll, 'tcx>(
207206
_ => None,
208207
};
209208
unsafe {
210-
llvm::LLVMRustDIBuilderCreateStructType(
209+
llvm::LLVMDIBuilderCreateStructType(
211210
DIB(cx),
212211
containing_scope,
213-
name.as_c_char_ptr(),
212+
name.as_ptr(),
214213
name.len(),
215214
file_metadata,
216215
line_number,
217216
size.bits(),
218217
align.bits() as u32,
219218
flags,
220-
None,
221-
empty_array,
222-
0,
219+
/* DerivedFrom */ None,
220+
/* Elements */ (&[]).as_ptr(),
221+
/* NumElements */ 0u32,
222+
/* RunTimeLang */ 0u32,
223223
vtable_holder,
224-
unique_type_id_str.as_c_char_ptr(),
224+
unique_type_id_str.as_ptr(),
225225
unique_type_id_str.len(),
226226
)
227227
}

compiler/rustc_codegen_llvm/src/llvm/ffi.rs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ use rustc_target::spec::SymbolVisibility;
1111

1212
use super::RustString;
1313
use super::debuginfo::{
14-
DIArray, DIBasicType, DIBuilder, DICompositeType, DIDerivedType, DIDescriptor, DIEnumerator,
15-
DIFile, DIFlags, DIGlobalVariableExpression, DILocation, DISPFlags, DIScope, DISubprogram,
16-
DISubrange, DITemplateTypeParameter, DIType, DIVariable, DebugEmissionKind, DebugNameTableKind,
14+
DIArray, DIBasicType, DIBuilder, DIDerivedType, DIDescriptor, DIEnumerator, DIFile, DIFlags,
15+
DIGlobalVariableExpression, DILocation, DISPFlags, DIScope, DISubprogram, DISubrange,
16+
DITemplateTypeParameter, DIType, DIVariable, DebugEmissionKind, DebugNameTableKind,
1717
};
1818
use crate::llvm;
1919

@@ -1713,6 +1713,25 @@ unsafe extern "C" {
17131713
Name: *const c_uchar,
17141714
NameLen: size_t,
17151715
) -> &'ll Metadata;
1716+
1717+
pub(crate) fn LLVMDIBuilderCreateStructType<'ll>(
1718+
Builder: &DIBuilder<'ll>,
1719+
Scope: Option<&'ll Metadata>,
1720+
Name: *const c_uchar,
1721+
NameLen: size_t,
1722+
File: &'ll Metadata,
1723+
LineNumber: c_uint,
1724+
SizeInBits: u64,
1725+
AlignInBits: u32,
1726+
Flags: DIFlags,
1727+
DerivedFrom: Option<&'ll Metadata>,
1728+
Elements: *const &'ll Metadata,
1729+
NumElements: c_uint,
1730+
RunTimeLang: c_uint,
1731+
VTableHolder: Option<&'ll Metadata>,
1732+
UniqueId: *const c_uchar,
1733+
UniqueIdLen: size_t,
1734+
) -> &'ll Metadata;
17161735
}
17171736

17181737
#[link(name = "llvm-wrapper", kind = "static")]
@@ -2055,24 +2074,6 @@ unsafe extern "C" {
20552074
Scope: Option<&'a DIScope>,
20562075
) -> &'a DIDerivedType;
20572076

2058-
pub fn LLVMRustDIBuilderCreateStructType<'a>(
2059-
Builder: &DIBuilder<'a>,
2060-
Scope: Option<&'a DIDescriptor>,
2061-
Name: *const c_char,
2062-
NameLen: size_t,
2063-
File: &'a DIFile,
2064-
LineNumber: c_uint,
2065-
SizeInBits: u64,
2066-
AlignInBits: u32,
2067-
Flags: DIFlags,
2068-
DerivedFrom: Option<&'a DIType>,
2069-
Elements: &'a DIArray,
2070-
RunTimeLang: c_uint,
2071-
VTableHolder: Option<&'a DIType>,
2072-
UniqueId: *const c_char,
2073-
UniqueIdLen: size_t,
2074-
) -> &'a DICompositeType;
2075-
20762077
pub fn LLVMRustDIBuilderCreateMemberType<'a>(
20772078
Builder: &DIBuilder<'a>,
20782079
Scope: &'a DIDescriptor,

compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -977,20 +977,6 @@ LLVMRustDIBuilderCreateTypedef(LLVMRustDIBuilderRef Builder,
977977
LineNo, unwrapDIPtr<DIScope>(Scope)));
978978
}
979979

980-
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateStructType(
981-
LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
982-
size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
983-
uint64_t SizeInBits, uint32_t AlignInBits, LLVMRustDIFlags Flags,
984-
LLVMMetadataRef DerivedFrom, LLVMMetadataRef Elements, unsigned RunTimeLang,
985-
LLVMMetadataRef VTableHolder, const char *UniqueId, size_t UniqueIdLen) {
986-
return wrap(Builder->createStructType(
987-
unwrapDI<DIDescriptor>(Scope), StringRef(Name, NameLen),
988-
unwrapDI<DIFile>(File), LineNumber, SizeInBits, AlignInBits,
989-
fromRust(Flags), unwrapDI<DIType>(DerivedFrom),
990-
DINodeArray(unwrapDI<MDTuple>(Elements)), RunTimeLang,
991-
unwrapDI<DIType>(VTableHolder), StringRef(UniqueId, UniqueIdLen)));
992-
}
993-
994980
extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateVariantPart(
995981
LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
996982
size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,

0 commit comments

Comments
 (0)