Remove the ObjC ARC passes from the default optimization list, and add
authorDan Gohman <gohman@apple.com>
Tue, 5 Jul 2011 22:01:44 +0000 (22:01 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 5 Jul 2011 22:01:44 +0000 (22:01 +0000)
extension points to be used by clang.

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

include/llvm/Support/PassManagerBuilder.h
lib/CodeGen/LLVMTargetMachine.cpp

index 31624db8139b82c22e0111b7f30e70ffe6dc62fc..8ac507f8bcc8ef3261bb6efc24c16cf69419881b 100644 (file)
@@ -67,7 +67,12 @@ public:
     
     /// EP_LoopOptimizerEnd - This extension point allows adding loop passes to
     /// the end of the loop optimizer.
-    EP_LoopOptimizerEnd
+    EP_LoopOptimizerEnd,
+
+    /// EP_ScalarOptimizerLate - This extension point allows adding optimization
+    /// passes after most of the main optimizations, but before the last
+    /// cleanup-ish optimizations.
+    EP_ScalarOptimizerLate
   };
   
   /// The Optimization Level - Specify the basic optimization level.
@@ -188,7 +193,6 @@ public:
       MPM.add(createArgumentPromotionPass());   // Scalarize uninlined fn args
     
     // Start of function pass.
-    MPM.add(createObjCARCExpandPass());         // Canonicalize ObjC ARC code.
     // Break up aggregate allocas, using SSAUpdater.
     MPM.add(createScalarReplAggregatesPass(-1, false));
     MPM.add(createEarlyCSEPass());              // Catch trivial redundancies
@@ -224,7 +228,9 @@ public:
     MPM.add(createJumpThreadingPass());         // Thread jumps
     MPM.add(createCorrelatedValuePropagationPass());
     MPM.add(createDeadStoreEliminationPass());  // Delete dead stores
-    MPM.add(createObjCARCOptPass());            // Objective-C ARC optimizations.
+
+    addExtensionsToPM(EP_ScalarOptimizerLate, MPM);
+
     MPM.add(createAggressiveDCEPass());         // Delete dead instructions
     MPM.add(createCFGSimplificationPass());     // Merge & remove BBs
     MPM.add(createInstructionCombiningPass());  // Clean up after everything.
index 0255b28a49d2f5ce52809ab861b119d46d153133..b1033312ca344ce96c004a862e9f8bf6a255f367 100644 (file)
@@ -303,10 +303,6 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM,
   if (!DisableVerify)
     PM.add(createVerifierPass());
 
-  // Simplify ObjC ARC code. This is done late because it makes re-optimization
-  // difficult.
-  PM.add(createObjCARCContractPass());
-
   // Run loop strength reduction before anything else.
   if (OptLevel != CodeGenOpt::None && !DisableLSR) {
     PM.add(createLoopStrengthReducePass(getTargetLowering()));