aboutsummaryrefslogtreecommitdiff
path: root/tools/gccas/gccas.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-02-01 07:24:53 +0000
committerChris Lattner <sabre@nondot.org>2004-02-01 07:24:53 +0000
commit05e4e8a5d26828380a0f0c7133860928170f9de8 (patch)
tree7d8475826c249452036961c92fc7cb2419419b28 /tools/gccas/gccas.cpp
parentc23396e8de5d28b964b0d3cd74c7e3681853445e (diff)
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
Diffstat (limited to 'tools/gccas/gccas.cpp')
-rw-r--r--tools/gccas/gccas.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/gccas/gccas.cpp b/tools/gccas/gccas.cpp
index 40053303db..1abf251fce 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