Fix spelling and grammar in a comment.
[oota-llvm.git] / tools / llvm-ld / Optimize.cpp
index 49b8f4225bc000ae9d33ff356f4ca8452514feb3..cbdf2f74990a6c9873a434b976857fd6b638ccb9 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by Reid Spencer and is distributed under the
-// University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
@@ -32,6 +32,9 @@ using namespace llvm;
 static cl::list<const PassInfo*, bool, PassNameParser>
   OptimizationList(cl::desc("Optimizations available:"));
 
+//Don't verify at the end
+static cl::opt<bool> DontVerify("disable-verify", cl::ReallyHidden);
+
 // Optimization Enumeration
 enum OptimizationLevels {
   OPT_FAST_COMPILE         = 1,
@@ -159,20 +162,22 @@ void Optimize(Module* M) {
 
     // The IPO passes may leave cruft around.  Clean up after them.
     addPass(Passes, createInstructionCombiningPass());
-
+    addPass(Passes, createJumpThreadingPass());        // Thread jumps.
     addPass(Passes, createScalarReplAggregatesPass()); // Break up allocas
 
     // Run a few AA driven optimizations here and now, to cleanup the code.
     addPass(Passes, createGlobalsModRefPass());      // IP alias analysis
 
     addPass(Passes, createLICMPass());               // Hoist loop invariants
-    addPass(Passes, createLoadValueNumberingPass()); // GVN for load instrs
-    addPass(Passes, createGCSEPass());               // Remove common subexprs
+    addPass(Passes, createGVNPass());                  // Remove redundancies
+    addPass(Passes, createMemCpyOptPass());          // Remove dead memcpy's
     addPass(Passes, createDeadStoreEliminationPass()); // Nuke dead stores
 
     // Cleanup and simplify the code after the scalar optimizations.
     addPass(Passes, createInstructionCombiningPass());
 
+    addPass(Passes, createJumpThreadingPass());        // Thread jumps.
+
     // Delete basic blocks, which optimization passes may have killed...
     addPass(Passes, createCFGSimplificationPass());
 
@@ -207,7 +212,8 @@ void Optimize(Module* M) {
   }
 
   // Make sure everything is still good.
-  Passes.add(createVerifierPass());
+  if (!DontVerify)
+    Passes.add(createVerifierPass());
 
   // Run our queue of passes all at once now, efficiently.
   Passes.run(*M);