Skip to content

Commit 2f78afa

Browse files
authored
Merge pull request #28214 from francisvm/bitstream-changes/master
Cherry-pick LLVM Bitstream changes
2 parents 1ca57e0 + 47c6ce2 commit 2f78afa

File tree

10 files changed

+640
-198
lines changed

10 files changed

+640
-198
lines changed

lib/ClangImporter/SwiftLookupTable.cpp

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
#include "llvm/ADT/SmallString.h"
3131
#include "llvm/ADT/STLExtras.h"
3232
#include "llvm/ADT/StringExtras.h"
33-
#include "llvm/Bitcode/BitstreamReader.h"
34-
#include "llvm/Bitcode/BitstreamWriter.h"
3533
#include "llvm/Bitcode/RecordLayout.h"
34+
#include "llvm/Bitstream/BitstreamReader.h"
35+
#include "llvm/Bitstream/BitstreamWriter.h"
3636
#include "llvm/Support/DJB.h"
3737
#include "llvm/Support/OnDiskHashTable.h"
3838

@@ -1482,7 +1482,13 @@ SwiftLookupTableReader::create(clang::ModuleFileExtension *extension,
14821482
// Look for the base name -> entities table record.
14831483
SmallVector<uint64_t, 64> scratch;
14841484
auto cursor = stream;
1485-
auto next = cursor.advance();
1485+
llvm::Expected<llvm::BitstreamEntry> maybeNext = cursor.advance();
1486+
if (!maybeNext) {
1487+
// FIXME this drops the error on the floor.
1488+
consumeError(maybeNext.takeError());
1489+
return nullptr;
1490+
}
1491+
llvm::BitstreamEntry next = maybeNext.get();
14861492
std::unique_ptr<SerializedBaseNameToEntitiesTable> serializedTable;
14871493
std::unique_ptr<SerializedGlobalsAsMembersTable> globalsAsMembersTable;
14881494
ArrayRef<clang::serialization::DeclID> categories;
@@ -1495,14 +1501,27 @@ SwiftLookupTableReader::create(clang::ModuleFileExtension *extension,
14951501
// API notes format.
14961502
if (cursor.SkipBlock())
14971503
return nullptr;
1498-
1499-
next = cursor.advance();
1504+
1505+
maybeNext = cursor.advance();
1506+
if (!maybeNext) {
1507+
// FIXME this drops the error on the floor.
1508+
consumeError(maybeNext.takeError());
1509+
return nullptr;
1510+
}
1511+
next = maybeNext.get();
15001512
continue;
15011513
}
15021514

15031515
scratch.clear();
15041516
StringRef blobData;
1505-
unsigned kind = cursor.readRecord(next.ID, scratch, &blobData);
1517+
llvm::Expected<unsigned> maybeKind =
1518+
cursor.readRecord(next.ID, scratch, &blobData);
1519+
if (!maybeKind) {
1520+
// FIXME this drops the error on the floor.
1521+
consumeError(maybeNext.takeError());
1522+
return nullptr;
1523+
}
1524+
unsigned kind = maybeKind.get();
15061525
switch (kind) {
15071526
case BASE_NAME_TO_ENTITIES_RECORD_ID: {
15081527
// Already saw base name -> entities table.
@@ -1554,7 +1573,13 @@ SwiftLookupTableReader::create(clang::ModuleFileExtension *extension,
15541573
break;
15551574
}
15561575

1557-
next = cursor.advance();
1576+
maybeNext = cursor.advance();
1577+
if (!maybeNext) {
1578+
// FIXME this drops the error on the floor.
1579+
consumeError(maybeNext.takeError());
1580+
return nullptr;
1581+
}
1582+
next = maybeNext.get();
15581583
}
15591584

15601585
if (!serializedTable) return nullptr;

lib/Frontend/SerializedDiagnosticConsumer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#include "llvm/Support/raw_ostream.h"
2929
#include "llvm/ADT/IntrusiveRefCntPtr.h"
3030
#include "llvm/ADT/SmallString.h"
31-
#include "llvm/Bitcode/BitstreamWriter.h"
31+
#include "llvm/Bitstream/BitstreamWriter.h"
3232

3333
// For constant values only.
3434
#include "clang/Frontend/SerializedDiagnosticPrinter.h"

lib/Serialization/BCReadingExtras.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#ifndef SWIFT_SERIALIZATION_BCREADINGEXTRAS_H
1414
#define SWIFT_SERIALIZATION_BCREADINGEXTRAS_H
1515

16-
#include "llvm/Bitcode/BitstreamReader.h"
16+
#include "llvm/Bitstream/BitstreamReader.h"
1717

1818
namespace swift {
1919
namespace serialization {
@@ -38,7 +38,8 @@ class BCOffsetRAII {
3838

3939
~BCOffsetRAII() {
4040
if (Cursor)
41-
Cursor->JumpToBit(Offset);
41+
cantFail(Cursor->JumpToBit(Offset),
42+
"BCOffsetRAII must be able to go back");
4243
}
4344
};
4445

0 commit comments

Comments
 (0)