Add an AlignmentFromAssumptions Pass
[oota-llvm.git] / lib / Transforms / IPO / PassManagerBuilder.cpp
index 75714713172d4ce2f655a504f263ef331b72df3f..fb56088d3617ff2214b2e3459cf9d9ac1a21136b 100644 (file)
@@ -310,6 +310,10 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
   if (!DisableUnrollLoops)
     MPM.add(createLoopUnrollPass());    // Unroll small loops
 
+  // After vectorization and unrolling, assume intrinsics may tell us more
+  // about pointer alignments.
+  MPM.add(createAlignmentFromAssumptionsPass());
+
   if (!DisableUnitAtATime) {
     // FIXME: We shouldn't bother with this anymore.
     MPM.add(createStripDeadPrototypesPass()); // Get rid of dead prototypes
@@ -399,6 +403,10 @@ void PassManagerBuilder::addLTOOptimizationPasses(PassManagerBase &PM) {
   // More scalar chains could be vectorized due to more alias information
   PM.add(createSLPVectorizerPass()); // Vectorize parallel scalar chains.
 
+  // After vectorization, assume intrinsics may tell us more about pointer
+  // alignments.
+  PM.add(createAlignmentFromAssumptionsPass());
+
   if (LoadCombine)
     PM.add(createLoadCombinePass());