Added support in serializer and deserializer to create arbitrary blocks.
Added detection of end-of-stream in deserializer.
llvm-svn: 43736
diff --git a/llvm/lib/Bitcode/Reader/Deserialize.cpp b/llvm/lib/Bitcode/Reader/Deserialize.cpp
index 31d180f..ef4e4f7 100644
--- a/llvm/lib/Bitcode/Reader/Deserialize.cpp
+++ b/llvm/lib/Bitcode/Reader/Deserialize.cpp
@@ -47,10 +47,15 @@
// FIXME: Check if we haven't run off the edge of the stream.
// FIXME: Handle abbreviations.
+ assert (Record.size() == 0);
+
unsigned Code;
while (true) {
+ if (Stream.AtEndOfStream())
+ return;
+
Code = Stream.ReadCode();
if (Code == bitc::ENTER_SUBBLOCK) {
@@ -71,7 +76,16 @@
assert (Record.size() == 0);
Stream.ReadRecord(Code,Record);
- assert (Record.size() > 0);
+ assert (Record.size() > 0 || Stream.AtEndOfStream());
+}
+
+bool Deserializer::AtEnd() {
+ if (inRecord())
+ return false;
+
+ ReadRecord();
+
+ return Stream.AtEndOfStream();
}
uint64_t Deserializer::ReadInt() {