Reinstate r133513 (reverted in r133700) with an additional fix for a
[oota-llvm.git] / include / llvm / Support / PassManagerBuilder.h
index 513bb887a04bb67f8cf6ba85e8c0a9bb4178721f..31624db8139b82c22e0111b7f30e70ffe6dc62fc 100644 (file)
@@ -188,6 +188,7 @@ 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
@@ -223,6 +224,7 @@ public:
     MPM.add(createJumpThreadingPass());         // Thread jumps
     MPM.add(createCorrelatedValuePropagationPass());
     MPM.add(createDeadStoreEliminationPass());  // Delete dead stores
+    MPM.add(createObjCARCOptPass());            // Objective-C ARC optimizations.
     MPM.add(createAggressiveDCEPass());         // Delete dead instructions
     MPM.add(createCFGSimplificationPass());     // Merge & remove BBs
     MPM.add(createInstructionCombiningPass());  // Clean up after everything.