diff options
author | Chris Lattner <sabre@nondot.org> | 2007-05-06 04:49:55 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-05-06 04:49:55 +0000 |
commit | 68d4922adfde16a5477c84f25f4e84aa4129943e (patch) | |
tree | 4d3b2b155c96e82a0c0cd0368ae309505f2cd9b4 /tools | |
parent | 0f4ed87c9c894fa55276d4f309923a4ac219711e (diff) | |
download | external_llvm-68d4922adfde16a5477c84f25f4e84aa4129943e.zip external_llvm-68d4922adfde16a5477c84f25f4e84aa4129943e.tar.gz external_llvm-68d4922adfde16a5477c84f25f4e84aa4129943e.tar.bz2 |
bitcodify
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36838 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r-- | tools/lto/Makefile | 2 | ||||
-rw-r--r-- | tools/lto/lto.cpp | 29 |
2 files changed, 24 insertions, 7 deletions
diff --git a/tools/lto/Makefile b/tools/lto/Makefile index f728cbe..6cb1a7b 100644 --- a/tools/lto/Makefile +++ b/tools/lto/Makefile @@ -24,7 +24,7 @@ else BUILD_ARCHIVE = 1 endif -LINK_COMPONENTS := $(TARGETS_TO_BUILD) ipo scalaropts linker bcreader bcwriter +LINK_COMPONENTS := $(TARGETS_TO_BUILD) ipo scalaropts linker bcreader bcwriter bitreader bitwriter include $(LEVEL)/Makefile.common diff --git a/tools/lto/lto.cpp b/tools/lto/lto.cpp index 885edbc..f7ea310 100644 --- a/tools/lto/lto.cpp +++ b/tools/lto/lto.cpp @@ -17,12 +17,14 @@ #include "llvm/Linker.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" +#include "llvm/Bitcode/ReaderWriter.h" #include "llvm/Bytecode/Reader.h" #include "llvm/Bytecode/Writer.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileUtilities.h" #include "llvm/Support/SystemUtils.h" #include "llvm/Support/Mangler.h" +#include "llvm/Support/MemoryBuffer.h" #include "llvm/System/Program.h" #include "llvm/System/Signals.h" #include "llvm/Analysis/Passes.h" @@ -51,7 +53,7 @@ llvm::LinkTimeOptimizer *createLLVMOptimizer() return l; } - +static bool Bitcode = false; /// If symbol is not used then make it internal and let optimizer takes /// care of it. @@ -119,7 +121,14 @@ LTO::getModule(const std::string &InputFilename) NameToModuleMap::iterator pos = allModules.find(InputFilename.c_str()); if (pos != allModules.end()) m = allModules[InputFilename.c_str()]; - else { + else if (Bitcode) { + if (MemoryBuffer *Buffer + = MemoryBuffer::getFile(&InputFilename[0], InputFilename.size())) { + m = ParseBitcodeFile(Buffer); + delete Buffer; + } + allModules[InputFilename.c_str()] = m; + } else { m = ParseBytecodeFile(InputFilename); allModules[InputFilename.c_str()] = m; } @@ -376,8 +385,12 @@ LTO::optimizeModules(const std::string &OutputFilename, std::string tempFileName(FinalOutputPath.c_str()); tempFileName += "0.bc"; std::ofstream Out(tempFileName.c_str(), io_mode); - OStream L(Out); - WriteBytecodeToFile(bigOne, L); + if (Bitcode) { + WriteBitcodeToFile(bigOne, Out); + } else { + OStream L(Out); + WriteBytecodeToFile(bigOne, L); + } } // Strip leading underscore because it was added to match names @@ -430,8 +443,12 @@ LTO::optimizeModules(const std::string &OutputFilename, std::string tempFileName(FinalOutputPath.c_str()); tempFileName += "1.bc"; std::ofstream Out(tempFileName.c_str(), io_mode); - OStream L(Out); - WriteBytecodeToFile(bigOne, L); + if (Bitcode) { + WriteBitcodeToFile(bigOne, Out); + } else { + OStream L(Out); + WriteBytecodeToFile(bigOne, L); + } } targetTriple = bigOne->getTargetTriple(); |