From: Chris Lattner Date: Sun, 1 Feb 2004 07:24:53 +0000 (+0000) Subject: Now that tailduplication does not bork SSA form, run mem2reg earlier in gccas. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=05e4e8a5d26828380a0f0c7133860928170f9de8;p=oota-llvm.git Now that tailduplication does not bork SSA form, run mem2reg earlier in gccas. 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 --- diff --git a/tools/gccas/gccas.cpp b/tools/gccas/gccas.cpp index 40053303db6..1abf251fce3 100644 --- a/tools/gccas/gccas.cpp +++ b/tools/gccas/gccas.cpp @@ -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