add an option to not auto-process abbreviations in advance()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172946 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2013-01-20 02:12:39 +00:00
parent 1426841672
commit 099b636562

View File

@ -159,7 +159,6 @@ struct BitstreamEntry {
}
};
/// BitstreamCursor - This represents a position within a bitcode file. There
/// may be multiple independent cursors reading within one bitstream, each
/// maintaining their own local state.
@ -271,7 +270,14 @@ public:
/// Flags that modify the behavior of advance().
enum {
AF_DontPopBlockAtEnd = 1
/// AF_DontPopBlockAtEnd - If this flag is used, the advance() method does
/// not automatically pop the block scope when the end of a block is
/// reached.
AF_DontPopBlockAtEnd = 1,
/// AF_DontAutoprocessAbbrevs - If this flag is used, abbrev entries are
/// returned just like normal records.
AF_DontAutoprocessAbbrevs = 2
};
/// advance - Advance the current bitstream, returning the next entry in the
@ -289,7 +295,8 @@ public:
if (Code == bitc::ENTER_SUBBLOCK)
return BitstreamEntry::getSubBlock(ReadSubBlockID());
if (Code == bitc::DEFINE_ABBREV) {
if (Code == bitc::DEFINE_ABBREV &&
!(Flags & AF_DontAutoprocessAbbrevs)) {
// We read and accumulate abbrev's, the client can't do anything with
// them anyway.
ReadAbbrevRecord();
@ -483,7 +490,7 @@ private:
BlockScope.pop_back();
}
//===--------------------------------------------------------------------===//
//===--------------------------------------------------------------------===//
// Record Processing
//===--------------------------------------------------------------------===//