diff options
Diffstat (limited to 'llvm/lib/IR')
| -rw-r--r-- | llvm/lib/IR/AsmWriter.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/IR/DIBuilder.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/IR/DebugInfoMetadata.cpp | 15 | ||||
| -rw-r--r-- | llvm/lib/IR/LLVMContextImpl.h | 11 | 
4 files changed, 21 insertions, 12 deletions
| diff --git a/llvm/lib/IR/AsmWriter.cpp b/llvm/lib/IR/AsmWriter.cpp index 3c222f5..95d954f 100644 --- a/llvm/lib/IR/AsmWriter.cpp +++ b/llvm/lib/IR/AsmWriter.cpp @@ -2199,6 +2199,7 @@ static void writeDIBasicType(raw_ostream &Out, const DIBasicType *N,    Printer.printString("name", N->getName());    Printer.printMetadataOrInt("size", N->getRawSizeInBits(), true);    Printer.printInt("align", N->getAlignInBits()); +  Printer.printInt("dataSize", N->getDataSizeInBits());    Printer.printDwarfEnum("encoding", N->getEncoding(),                           dwarf::AttributeEncodingString);    Printer.printInt("num_extra_inhabitants", N->getNumExtraInhabitants()); diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp index 07a870f..ca11ecf 100644 --- a/llvm/lib/IR/DIBuilder.cpp +++ b/llvm/lib/IR/DIBuilder.cpp @@ -261,10 +261,12 @@ DIBasicType *DIBuilder::createNullPtrType() {  DIBasicType *DIBuilder::createBasicType(StringRef Name, uint64_t SizeInBits,                                          unsigned Encoding,                                          DINode::DIFlags Flags, -                                        uint32_t NumExtraInhabitants) { +                                        uint32_t NumExtraInhabitants, +                                        uint32_t DataSizeInBits) {    assert(!Name.empty() && "Unable to create type without name");    return DIBasicType::get(VMContext, dwarf::DW_TAG_base_type, Name, SizeInBits, -                          0, Encoding, NumExtraInhabitants, Flags); +                          0, Encoding, NumExtraInhabitants, DataSizeInBits, +                          Flags);  }  DIFixedPointType * diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp index e30df88..fafc325 100644 --- a/llvm/lib/IR/DebugInfoMetadata.cpp +++ b/llvm/lib/IR/DebugInfoMetadata.cpp @@ -872,15 +872,18 @@ DIEnumerator *DIEnumerator::getImpl(LLVMContext &Context, const APInt &Value,  DIBasicType *DIBasicType::getImpl(LLVMContext &Context, unsigned Tag,                                    MDString *Name, Metadata *SizeInBits,                                    uint32_t AlignInBits, unsigned Encoding, -                                  uint32_t NumExtraInhabitants, DIFlags Flags, +                                  uint32_t NumExtraInhabitants, +                                  uint32_t DataSizeInBits, DIFlags Flags,                                    StorageType Storage, bool ShouldCreate) {    assert(isCanonical(Name) && "Expected canonical MDString"); -  DEFINE_GETIMPL_LOOKUP(DIBasicType, (Tag, Name, SizeInBits, AlignInBits, -                                      Encoding, NumExtraInhabitants, Flags)); +  DEFINE_GETIMPL_LOOKUP(DIBasicType, +                        (Tag, Name, SizeInBits, AlignInBits, Encoding, +                         NumExtraInhabitants, DataSizeInBits, Flags));    Metadata *Ops[] = {nullptr, nullptr, Name, SizeInBits, nullptr}; -  DEFINE_GETIMPL_STORE(DIBasicType, -                       (Tag, AlignInBits, Encoding, NumExtraInhabitants, Flags), -                       Ops); +  DEFINE_GETIMPL_STORE( +      DIBasicType, +      (Tag, AlignInBits, Encoding, NumExtraInhabitants, DataSizeInBits, Flags), +      Ops);  }  std::optional<DIBasicType::Signedness> DIBasicType::getSignedness() const { diff --git a/llvm/lib/IR/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h index e03f993..2c9921d 100644 --- a/llvm/lib/IR/LLVMContextImpl.h +++ b/llvm/lib/IR/LLVMContextImpl.h @@ -480,20 +480,22 @@ template <> struct MDNodeKeyImpl<DIBasicType> {    uint32_t AlignInBits;    unsigned Encoding;    uint32_t NumExtraInhabitants; +  uint32_t DataSizeInBits;    unsigned Flags;    MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *SizeInBits,                  uint32_t AlignInBits, unsigned Encoding, -                uint32_t NumExtraInhabitants, unsigned Flags) +                uint32_t NumExtraInhabitants, uint32_t DataSizeInBits, +                unsigned Flags)        : Tag(Tag), Name(Name), SizeInBits(SizeInBits), AlignInBits(AlignInBits),          Encoding(Encoding), NumExtraInhabitants(NumExtraInhabitants), -        Flags(Flags) {} +        DataSizeInBits(DataSizeInBits), Flags(Flags) {}    MDNodeKeyImpl(const DIBasicType *N)        : Tag(N->getTag()), Name(N->getRawName()),          SizeInBits(N->getRawSizeInBits()), AlignInBits(N->getAlignInBits()),          Encoding(N->getEncoding()), -        NumExtraInhabitants(N->getNumExtraInhabitants()), Flags(N->getFlags()) { -  } +        NumExtraInhabitants(N->getNumExtraInhabitants()), +        DataSizeInBits(N->getDataSizeInBits()), Flags(N->getFlags()) {}    bool isKeyOf(const DIBasicType *RHS) const {      return Tag == RHS->getTag() && Name == RHS->getRawName() && @@ -501,6 +503,7 @@ template <> struct MDNodeKeyImpl<DIBasicType> {             AlignInBits == RHS->getAlignInBits() &&             Encoding == RHS->getEncoding() &&             NumExtraInhabitants == RHS->getNumExtraInhabitants() && +           DataSizeInBits == RHS->getDataSizeInBits() &&             Flags == RHS->getFlags();    } | 
