diff options
-rw-r--r-- | include/clang/AST/TranslationUnit.h | 17 | ||||
-rw-r--r-- | lib/AST/TranslationUnit.cpp | 51 | ||||
-rw-r--r-- | tools/clang-cc/ASTConsumers.cpp | 27 | ||||
-rw-r--r-- | tools/clang-cc/SerializationTest.cpp | 16 |
4 files changed, 40 insertions, 71 deletions
diff --git a/include/clang/AST/TranslationUnit.h b/include/clang/AST/TranslationUnit.h index 3c6344f2d9..40513e2019 100644 --- a/include/clang/AST/TranslationUnit.h +++ b/include/clang/AST/TranslationUnit.h @@ -61,27 +61,10 @@ public: iterator end() const { return Context->getTranslationUnitDecl()->decls_end(); } }; -/// EmitASTBitcodeFile - Emit a translation unit to a bitcode file. -bool EmitASTBitcodeFile(const TranslationUnit& TU, - const llvm::sys::Path& Filename); - -bool EmitASTBitcodeFile(const TranslationUnit* TU, - const llvm::sys::Path& Filename); - -/// EmitASTBitcodeStream - Emit a translation unit to a std::ostream. -bool EmitASTBitcodeStream(const TranslationUnit& TU, - std::ostream& Stream); - -bool EmitASTBitcodeStream(const TranslationUnit* TU, - std::ostream& Stream); - /// EmitASTBitcodeBuffer - Emit a translation unit to a buffer. bool EmitASTBitcodeBuffer(const TranslationUnit& TU, std::vector<unsigned char>& Buffer); -bool EmitASTBitcodeBuffer(const TranslationUnit* TU, - std::vector<unsigned char>& Buffer); - /// ReadASTBitcodeBuffer - Reconsitute a translation unit from a buffer. TranslationUnit* ReadASTBitcodeBuffer(llvm::MemoryBuffer& MBuffer, FileManager& FMgr); diff --git a/lib/AST/TranslationUnit.cpp b/lib/AST/TranslationUnit.cpp index a0a800c1e3..55ab1a7360 100644 --- a/lib/AST/TranslationUnit.cpp +++ b/lib/AST/TranslationUnit.cpp @@ -39,24 +39,6 @@ TranslationUnit::~TranslationUnit() { } } -bool clang::EmitASTBitcodeFile(const TranslationUnit* TU, - const llvm::sys::Path& Filename) { - - return TU ? EmitASTBitcodeFile(*TU, Filename) : false; -} - -bool clang::EmitASTBitcodeBuffer(const TranslationUnit* TU, - std::vector<unsigned char>& Buffer) { - - return TU ? EmitASTBitcodeBuffer(*TU, Buffer) : false; -} - -bool clang::EmitASTBitcodeStream(const TranslationUnit* TU, - std::ostream& Stream) { - - return TU ? EmitASTBitcodeStream(*TU, Stream) : false; -} - bool clang::EmitASTBitcodeBuffer(const TranslationUnit& TU, std::vector<unsigned char>& Buffer) { // Create bitstream. @@ -82,39 +64,6 @@ bool clang::EmitASTBitcodeBuffer(const TranslationUnit& TU, return true; } -bool clang::EmitASTBitcodeStream(const TranslationUnit& TU, - std::ostream& Stream) { - - // Reserve 256K for bitstream buffer. - std::vector<unsigned char> Buffer; - Buffer.reserve(256*1024); - - EmitASTBitcodeBuffer(TU,Buffer); - - // Write the bits to disk. - Stream.write((char*)&Buffer.front(), Buffer.size()); - return true; -} - -bool clang::EmitASTBitcodeFile(const TranslationUnit& TU, - const llvm::sys::Path& Filename) { - - // Reserve 256K for bitstream buffer. - std::vector<unsigned char> Buffer; - Buffer.reserve(256*1024); - - EmitASTBitcodeBuffer(TU,Buffer); - - // Write the bits to disk. - if (FILE* fp = fopen(Filename.c_str(),"wb")) { - fwrite((char*)&Buffer.front(), sizeof(char), Buffer.size(), fp); - fclose(fp); - return true; - } - - return false; -} - TranslationUnit* clang::ReadASTBitcodeBuffer(llvm::MemoryBuffer& MBuffer, FileManager& FMgr) { diff --git a/tools/clang-cc/ASTConsumers.cpp b/tools/clang-cc/ASTConsumers.cpp index c3828a9e2b..c040a54b44 100644 --- a/tools/clang-cc/ASTConsumers.cpp +++ b/tools/clang-cc/ASTConsumers.cpp @@ -977,7 +977,18 @@ public: virtual void HandleTranslationUnit(TranslationUnit& TU) { if (Diags.hasErrorOccurred()) return; - EmitASTBitcodeFile(&TU, FName); + + // Reserve 256K for bitstream buffer. + std::vector<unsigned char> Buffer; + Buffer.reserve(256*1024); + + EmitASTBitcodeBuffer(TU,Buffer); + + // Write the bits to disk. + if (FILE* fp = fopen(FName.c_str(),"wb")) { + fwrite((char*)&Buffer.front(), sizeof(char), Buffer.size(), fp); + fclose(fp); + } } }; @@ -1016,7 +1027,19 @@ public: sprintf(&buf[0], "%s-%llX.ast", FE->getName(), (unsigned long long) FE->getInode()); FName.appendComponent(&buf[0]); - EmitASTBitcodeFile(&TU, FName); + + + // Reserve 256K for bitstream buffer. + std::vector<unsigned char> Buffer; + Buffer.reserve(256*1024); + + EmitASTBitcodeBuffer(TU,Buffer); + + // Write the bits to disk. + if (FILE* fp = fopen(FName.c_str(),"wb")) { + fwrite((char*)&Buffer.front(), sizeof(char), Buffer.size(), fp); + fclose(fp); + } // Now emit the sources. diff --git a/tools/clang-cc/SerializationTest.cpp b/tools/clang-cc/SerializationTest.cpp index fcc047e015..aa3163f556 100644 --- a/tools/clang-cc/SerializationTest.cpp +++ b/tools/clang-cc/SerializationTest.cpp @@ -74,7 +74,21 @@ bool SerializationTest::Serialize(llvm::sys::Path& Filename, } // Serialize the translation unit. - return EmitASTBitcodeFile(TU,Filename); + + // Reserve 256K for bitstream buffer. + std::vector<unsigned char> Buffer; + Buffer.reserve(256*1024); + + EmitASTBitcodeBuffer(TU,Buffer); + + // Write the bits to disk. + if (FILE* fp = fopen(Filename.c_str(),"wb")) { + fwrite((char*)&Buffer.front(), sizeof(char), Buffer.size(), fp); + fclose(fp); + return true; + } + + return false; } bool SerializationTest::Deserialize(llvm::sys::Path& Filename, |