1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00

DIBuilder: Similar to createPointerType, make createMemberPointerType take

a size and alignment. Several assertions in DwarfDebug rely on all variable
types to report back a size, or to be derived from a type with a size.

Tested in CFE.

llvm-svn: 224780
This commit is contained in:
Adrian Prantl 2014-12-23 19:11:47 +00:00
parent 1f065b2623
commit 7f2c79ccd0
2 changed files with 10 additions and 5 deletions

View File

@ -172,8 +172,12 @@ namespace llvm {
/// \brief Create debugging information entry for a pointer to member.
/// @param PointeeTy Type pointed to by this pointer.
/// @param SizeInBits Size.
/// @param AlignInBits Alignment. (optional)
/// @param Class Type for which this pointer points to members of.
DIDerivedType createMemberPointerType(DIType PointeeTy, DIType Class);
DIDerivedType createMemberPointerType(DIType PointeeTy, DIType Class,
uint64_t SizeInBits,
uint64_t AlignInBits = 0);
/// createReferenceType - Create debugging information entry for a c++
/// style reference or rvalue reference type.

View File

@ -328,14 +328,15 @@ DIBuilder::createPointerType(DIType PointeeTy, uint64_t SizeInBits,
return DIDerivedType(MDNode::get(VMContext, Elts));
}
DIDerivedType DIBuilder::createMemberPointerType(DIType PointeeTy,
DIType Base) {
DIDerivedType
DIBuilder::createMemberPointerType(DIType PointeeTy, DIType Base,
uint64_t SizeInBits, uint64_t AlignInBits) {
// Pointer types are encoded in DIDerivedType format.
Metadata *Elts[] = {HeaderBuilder::get(dwarf::DW_TAG_ptr_to_member_type)
.concat(StringRef())
.concat(0) // Line
.concat(0) // Size
.concat(0) // Align
.concat(SizeInBits) // Size
.concat(AlignInBits) // Align
.concat(0) // Offset
.concat(0) // Flags
.get(VMContext),