OSDN Git Service

Turn on earlycse by default. This seems to be a small performance
authorChris Lattner <sabre@nondot.org>
Mon, 3 Jan 2011 06:19:09 +0000 (06:19 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 3 Jan 2011 06:19:09 +0000 (06:19 +0000)
improvement in the generated code, and speeds up 'opt -std-compile-opts'
compile time on 176.gcc from 24.84s to 23.2s (about 7%).

This also resolves a specific code quality issue in rdar://7352081 which
was generating poor code for:

int t(int a, int b) {
  if (a & b & 1)
    return a & b;
  return 3;
}

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

include/llvm/Support/StandardPasses.h

index 7e32f1f..6a428e7 100644 (file)
@@ -129,9 +129,9 @@ namespace llvm {
     
     // Start of function pass.
     PM->add(createScalarReplAggregatesPass());  // Break up aggregate allocas
+    PM->add(createEarlyCSEPass());              // Catch trivial redundancies
     if (SimplifyLibCalls)
       PM->add(createSimplifyLibCallsPass());    // Library Call Optimizations
-    PM->add(createInstructionCombiningPass());  // Cleanup for scalarrepl.
     PM->add(createJumpThreadingPass());         // Thread jumps.
     PM->add(createCorrelatedValuePropagationPass()); // Propagate conditionals
     PM->add(createCFGSimplificationPass());     // Merge & remove BBs