diff options
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 020468a59b8..70f8432d344 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -2414,13 +2414,14 @@ std::error_code BitcodeReader::parseMetadata(bool ModuleLevel) { return error("Invalid record"); IsDistinct = Record[0]; + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[10]); MetadataList.assignValue( GET_OR_DISTINCT( DIDerivedType, (Context, Record[1], getMDString(Record[2]), getMDOrNull(Record[3]), Record[4], getDITypeRefOrNull(Record[5]), getDITypeRefOrNull(Record[6]), Record[7], Record[8], Record[9], - Record[10], getDITypeRefOrNull(Record[11]))), + Flags, getDITypeRefOrNull(Record[11]))), NextMetadataNo++); break; } @@ -2441,7 +2442,7 @@ std::error_code BitcodeReader::parseMetadata(bool ModuleLevel) { uint64_t SizeInBits = Record[7]; uint64_t AlignInBits = Record[8]; uint64_t OffsetInBits = Record[9]; - unsigned Flags = Record[10]; + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[10]); Metadata *Elements = getMDOrNull(Record[11]); unsigned RuntimeLang = Record[12]; Metadata *VTableHolder = getDITypeRefOrNull(Record[13]); @@ -2474,12 +2475,13 @@ std::error_code BitcodeReader::parseMetadata(bool ModuleLevel) { unsigned CC = (Record.size() > 3) ? Record[3] : 0; IsDistinct = Record[0] & 0x1; + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[1]); Metadata *Types = getMDOrNull(Record[2]); if (LLVM_UNLIKELY(IsOldTypeRefArray)) Types = MetadataList.upgradeTypeRefArray(Types); MetadataList.assignValue( - GET_OR_DISTINCT(DISubroutineType, (Context, Record[1], CC, Types)), + GET_OR_DISTINCT(DISubroutineType, (Context, Flags, CC, Types)), NextMetadataNo++); break; } @@ -2564,7 +2566,9 @@ std::error_code BitcodeReader::parseMetadata(bool ModuleLevel) { Record[11], // virtuality Record[12], // virtualIndex HasThisAdj ? Record[19] : 0, // thisAdjustment - Record[13], // flags + static_cast<DINode::DIFlags>( + Record[13] // flags + ), Record[14], // isOptimized HasUnit ? CUorFn : nullptr, // unit getMDOrNull(Record[15 + Offset]), // templateParams @@ -2695,13 +2699,14 @@ std::error_code BitcodeReader::parseMetadata(bool ModuleLevel) { // DW_TAG_arg_variable. IsDistinct = Record[0]; bool HasTag = Record.size() > 8; + DINode::DIFlags Flags = static_cast<DINode::DIFlags>(Record[7 + HasTag]); MetadataList.assignValue( GET_OR_DISTINCT(DILocalVariable, (Context, getMDOrNull(Record[1 + HasTag]), getMDString(Record[2 + HasTag]), getMDOrNull(Record[3 + HasTag]), Record[4 + HasTag], getDITypeRefOrNull(Record[5 + HasTag]), - Record[6 + HasTag], Record[7 + HasTag])), + Record[6 + HasTag], Flags)), NextMetadataNo++); break; } |