diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-07-05 00:57:50 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-07-05 00:57:50 +0000 |
commit | 5c15fe5cf8a5f8934baa17d77b8f8065224cd43e (patch) | |
tree | 3096dd57c1badf2062fe35787e67ae5a51ca03e6 /lib/Bytecode/Reader/Reader.cpp | |
parent | c156095b174987226a94583cb7e10c426dddaea6 (diff) |
Finalize bytecode dumping. The "handleFinish" method was getting called
too soon so the function data was not getting dumped (it was generated
after the call handleFinish). Also cleaned up the output format for
proper indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14627 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Reader/Reader.cpp')
-rw-r--r-- | lib/Bytecode/Reader/Reader.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp index 8d0df020ec..14f6c9f7e2 100644 --- a/lib/Bytecode/Reader/Reader.cpp +++ b/lib/Bytecode/Reader/Reader.cpp @@ -894,7 +894,6 @@ unsigned BytecodeReader::ParseInstructionList(Function* F) { BB = ParsedBasicBlocks[BlockNo] = new BasicBlock(); else BB = ParsedBasicBlocks[BlockNo]; - if (Handler) Handler->handleBasicBlockEnd( BlockNo ); ++BlockNo; F->getBasicBlockList().push_back(BB); @@ -904,6 +903,8 @@ unsigned BytecodeReader::ParseInstructionList(Function* F) { if (!BB->getTerminator()) throw std::string("Non-terminated basic block found!"); + + if (Handler) Handler->handleBasicBlockEnd( BlockNo-1 ); } return BlockNo; @@ -1898,7 +1899,8 @@ void BytecodeReader::ParseModule() { /// and \p Length parameters. void BytecodeReader::ParseBytecode( BufPtr Buf, unsigned Length, - const std::string &ModuleID) { + const std::string &ModuleID, + bool processFunctions) { try { At = MemStart = BlockStart = Buf; @@ -1934,14 +1936,19 @@ void BytecodeReader::ParseBytecode( // Parse the module contents this->ParseModule(); - // Tell the handler we're done - if (Handler) Handler->handleModuleEnd(ModuleID); - // Check for missing functions if ( hasFunctions() ) throw std::string("Function expected, but bytecode stream ended!"); - // Tell the handler we're + // Process all the function bodies now, if requested + if ( processFunctions ) + ParseAllFunctionBodies(); + + // Tell the handler we're done with the module + if (Handler) + Handler->handleModuleEnd(ModuleID); + + // Tell the handler we're finished the parse if (Handler) Handler->handleFinish(); } catch (std::string& errstr ) { |