33 llvm::Expected<std::vector<std::unique_ptr<Info>>>
readBitcode();
36 enum class Cursor { BadBlock = 1,
Record, BlockEnd, BlockBegin };
39 llvm::Error validateStream();
40 llvm::Error readVersion();
41 llvm::Error readBlockInfoBlock();
45 template <
typename T> llvm::Error readBlock(
unsigned ID, T I);
48 template <
typename T> llvm::Error readSubBlock(
unsigned ID, T I);
52 template <
typename T> llvm::Error readRecord(
unsigned ID, T I);
56 llvm::Expected<std::unique_ptr<Info>> createInfo(
unsigned ID);
60 Cursor skipUntilRecordOrBlock(
unsigned &BlockOrRecordID);
63 llvm::Expected<std::unique_ptr<Info>> readBlockToInfo(
unsigned ID);
65 template <
typename InfoType,
typename T,
typename CallbackFunction>
66 llvm::Error handleSubBlock(
unsigned ID, T Parent, CallbackFunction Function);
68 template <
typename InfoType,
typename T,
typename CallbackFunction>
69 llvm::Error handleTypeSubBlock(
unsigned ID, T Parent,
70 CallbackFunction Function);
72 llvm::BitstreamCursor &Stream;
73 std::optional<llvm::BitstreamBlockInfo> BlockInfo;
74 FieldId CurrentReferenceField;