@@ -1894,13 +1894,17 @@ struct DIEDataWriter : public DataWriter {
1894
1894
// / is described by some DIEAbbrevRef block.
1895
1895
struct DistinctDataWriter : public DataWriter {
1896
1896
Expected<DIEDistinctDataRef> getCASNode (MCCASBuilder &CASBuilder) {
1897
+ #if LLVM_ENABLE_ZLIB
1897
1898
SmallVector<uint8_t > CompressedBuff;
1898
1899
compression::zlib::compress (arrayRefFromStringRef (toStringRef (Data)),
1899
1900
CompressedBuff);
1900
1901
// Reserve 8 bytes for ULEB to store the size of the uncompressed data.
1901
1902
CompressedBuff.append (8 , 0 );
1902
1903
encodeULEB128 (Data.size (), CompressedBuff.end () - 8 , 8 /* Pad to*/ );
1903
1904
return DIEDistinctDataRef::create (CASBuilder, toStringRef (CompressedBuff));
1905
+ #else
1906
+ return DIEDistinctDataRef::create (CASBuilder, toStringRef (Data));
1907
+ #endif
1904
1908
}
1905
1909
};
1906
1910
@@ -3392,16 +3396,19 @@ Error mccasformats::v1::visitDebugInfo(
3392
3396
return LoadedTopRef.takeError ();
3393
3397
3394
3398
StringRef DistinctData = LoadedTopRef->DistinctData .getData ();
3399
+ #if LLVM_ENABLE_ZLIB
3395
3400
ArrayRef<uint8_t > BuffRef = arrayRefFromStringRef (DistinctData);
3396
3401
auto UncompressedSize = decodeULEB128 (BuffRef.data () + BuffRef.size () - 8 );
3397
3402
BuffRef = BuffRef.drop_back (8 );
3398
3403
SmallVector<uint8_t > OutBuff;
3399
3404
if (auto E =
3400
3405
compression::zlib::decompress (BuffRef, OutBuff, UncompressedSize))
3401
3406
return E;
3402
- auto UncompressedDistinctData = toStringRef (OutBuff);
3403
- BinaryStreamReader DistinctReader (UncompressedDistinctData,
3404
- support::endianness::little);
3407
+ DistinctData = toStringRef (OutBuff);
3408
+ BinaryStreamReader DistinctReader (DistinctData, support::endianness::little);
3409
+ #else
3410
+ BinaryStreamReader DistinctReader (DistinctData, support::endianness::little);
3411
+ #endif
3405
3412
ArrayRef<char > HeaderData;
3406
3413
3407
3414
auto BeginOffset = DistinctReader.getOffset ();
@@ -3423,15 +3430,9 @@ Error mccasformats::v1::visitDebugInfo(
3423
3430
HeaderCallback (toStringRef (HeaderData));
3424
3431
3425
3432
append_range (TotAbbrevEntries, LoadedTopRef->AbbrevEntries );
3426
- DIEVisitor Visitor{DwarfVersion,
3427
- {},
3428
- TotAbbrevEntries,
3429
- DistinctReader,
3430
- UncompressedDistinctData,
3431
- HeaderCallback,
3432
- StartTagCallback,
3433
- AttrCallback,
3434
- EndTagCallback,
3433
+ DIEVisitor Visitor{DwarfVersion, {}, TotAbbrevEntries,
3434
+ DistinctReader, DistinctData, HeaderCallback,
3435
+ StartTagCallback, AttrCallback, EndTagCallback,
3435
3436
NewBlockCallback};
3436
3437
return Visitor.visitDIERef (LoadedTopRef->RootDIE );
3437
3438
}
0 commit comments