Now that tailduplication does not bork SSA form, run mem2reg earlier in gccas.
authorChris Lattner <sabre@nondot.org>
Sun, 1 Feb 2004 07:24:53 +0000 (07:24 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 1 Feb 2004 07:24:53 +0000 (07:24 +0000)
This tremendously improves the code generated by the LLVM optimizer, primarily
by making the inliner more aggressive.  For example, it improves the stepanov
benchmark from 55.56 mega-additions/sec to 98.04 Ma/s.  It also improves the
oopack/iterator benchmark from 338.3MFLOPS/s to 1103.4MFLOPS/s.  Less noteworthy,
it improves oopack/matrix from 573 -> 641 MFLOPS/s.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11053 91177308-0d34-0410-b5e6-96231b3b80d8

tools/gccas/gccas.cpp

index 40053303db6480edf221b407efbd048f6acc24d0..1abf251fce3d03d557f38b1e740eae9471533a51 100644 (file)
@@ -65,18 +65,20 @@ void AddConfiguredTransformationPasses(PassManager &PM) {
 
   if (DisableOptimizations) return;
 
-  addPass(PM, createCFGSimplificationPass());    // Clean up disgusting code
   addPass(PM, createRaiseAllocationsPass());     // call %malloc -> malloc inst
+  addPass(PM, createCFGSimplificationPass());    // Clean up disgusting code
+  addPass(PM, createPromoteMemoryToRegister());  // Kill useless allocas
   addPass(PM, createGlobalDCEPass());            // Remove unused globals
   addPass(PM, createIPConstantPropagationPass());// IP Constant Propagation
   addPass(PM, createDeadArgEliminationPass());   // Dead argument elimination
+  addPass(PM, createInstructionCombiningPass()); // Clean up after IPCP & DAE
+  addPass(PM, createCFGSimplificationPass());    // Clean up after IPCP & DAE
 
   addPass(PM, createPruneEHPass());              // Remove dead EH info
 
   if (!DisableInline)
     addPass(PM, createFunctionInliningPass());   // Inline small functions
 
-  addPass(PM, createInstructionCombiningPass()); // Cleanup code for raise
   addPass(PM, createRaisePointerReferencesPass());// Recover type information
   addPass(PM, createTailDuplicationPass());      // Simplify cfg by copying code
   addPass(PM, createCFGSimplificationPass());    // Merge & remove BBs