diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-27 20:04:08 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-27 20:04:08 +0000 |
commit | 0370cc6399022b687f898c9edc5e98482252997c (patch) | |
tree | 5e572985e4d71ffe3215310fc5dcee3261b0d857 | |
parent | 82fd3f3d3ad44b7e3d0e7efc51a6498731746f79 (diff) | |
download | external_llvm-0370cc6399022b687f898c9edc5e98482252997c.zip external_llvm-0370cc6399022b687f898c9edc5e98482252997c.tar.gz external_llvm-0370cc6399022b687f898c9edc5e98482252997c.tar.bz2 |
give bitstreamreader an API to ignore names for blocks/records,
only llvm-bcanalyzer wants this info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70239 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Bitcode/BitstreamReader.h | 17 | ||||
-rw-r--r-- | tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp | 1 |
2 files changed, 17 insertions, 1 deletions
diff --git a/include/llvm/Bitcode/BitstreamReader.h b/include/llvm/Bitcode/BitstreamReader.h index be3d8c5..b7ae47d 100644 --- a/include/llvm/Bitcode/BitstreamReader.h +++ b/include/llvm/Bitcode/BitstreamReader.h @@ -41,11 +41,19 @@ private: std::vector<BlockInfo> BlockInfoRecords; + /// IgnoreBlockInfoNames - This is set to true if we don't care about the + /// block/record name information in the BlockInfo block. Only llvm-bcanalyzer + /// uses this. + bool IgnoreBlockInfoNames; + + BitstreamReader(const BitstreamReader&); // NOT IMPLEMENTED + void operator=(const BitstreamReader&); // NOT IMPLEMENTED public: - BitstreamReader() : FirstChar(0), LastChar(0) { + BitstreamReader() : FirstChar(0), LastChar(0), IgnoreBlockInfoNames(true) { } BitstreamReader(const unsigned char *Start, const unsigned char *End) { + IgnoreBlockInfoNames = true; init(Start, End); } @@ -70,6 +78,11 @@ public: const unsigned char *getFirstChar() const { return FirstChar; } const unsigned char *getLastChar() const { return LastChar; } + /// CollectBlockInfoNames - This is called by clients that want block/record + /// name information. + void CollectBlockInfoNames() { IgnoreBlockInfoNames = false; } + bool isIgnoringBlockInfoNames() { return IgnoreBlockInfoNames; } + //===--------------------------------------------------------------------===// // Block Manipulation //===--------------------------------------------------------------------===// @@ -598,6 +611,7 @@ public: break; case bitc::BLOCKINFO_CODE_BLOCKNAME: { if (!CurBlockInfo) return true; + if (BitStream->isIgnoringBlockInfoNames()) break; // Ignore name. std::string Name; for (unsigned i = 0, e = Record.size(); i != e; ++i) Name += (char)Record[i]; @@ -606,6 +620,7 @@ public: } case bitc::BLOCKINFO_CODE_SETRECORDNAME: { if (!CurBlockInfo) return true; + if (BitStream->isIgnoringBlockInfoNames()) break; // Ignore name. std::string Name; for (unsigned i = 1, e = Record.size(); i != e; ++i) Name += (char)Record[i]; diff --git a/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp b/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp index 9c5a3ae..e5955c7 100644 --- a/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp +++ b/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp @@ -464,6 +464,7 @@ static int AnalyzeBitcode() { BitstreamReader StreamFile(BufPtr, EndBufPtr); BitstreamCursor Stream(StreamFile); + StreamFile.CollectBlockInfoNames(); // Read the stream signature. char Signature[6]; |