#include "llvm/Bytecode/WriteBytecodePass.h"
#include "llvm/Assembly/PrintModulePass.h"
#include "llvm/Analysis/Verifier.h"
+#include "llvm/Analysis/LoopPass.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Support/PassNameParser.h"
addPass(PM, createTailCallEliminationPass()); // Eliminate tail calls
addPass(PM, createCFGSimplificationPass()); // Merge & remove BBs
addPass(PM, createReassociatePass()); // Reassociate expressions
+ addPass(PM, createLoopRotatePass());
addPass(PM, createLICMPass()); // Hoist loop invariants
addPass(PM, createLoopUnswitchPass()); // Unswitch loops.
addPass(PM, createInstructionCombiningPass()); // Clean up after LICM/reassoc
std::string ErrorMessage;
// Load the input module...
- std::auto_ptr<Module> M(ParseBytecodeFile(InputFilename, &ErrorMessage));
+ std::auto_ptr<Module> M(ParseBytecodeFile(InputFilename,
+ Compressor::decompressToNewBuffer, &ErrorMessage));
if (M.get() == 0) {
cerr << argv[0] << ": ";
if (ErrorMessage.size())