Print variable's display name in dwarf DIE.
[oota-llvm.git] / lib / CodeGen / LoopAligner.cpp
index 6cca8e5badcb359e69328796bdc909dbe4d892c3..b67f5c3bf9192e0a9a444a813a4331d26a316102 100644 (file)
@@ -58,10 +58,20 @@ bool LoopAligner::runOnMachineFunction(MachineFunction &MF) {
   if (!Align)
     return false;  // Don't care about loop alignment.
 
+  const Function *F = MF.getFunction();
+  if (F->hasFnAttr(Attribute::OptimizeForSize))
+    return false;
+
   for (MachineFunction::iterator I = MF.begin(), E = MF.end(); I != E; ++I) {
     MachineBasicBlock *MBB = I;
-    if (MLI->isLoopHeader(MBB))
+    if (MLI->isLoopHeader(MBB)) {
+      MachineBasicBlock *PredBB = prior(I);
+      if (MLI->getLoopFor(MBB) == MLI->getLoopFor(PredBB))
+        // If previously BB is in the same loop, don't align this BB. We want
+        // to prevent adding noop's inside a loop.
+        continue;
       MBB->setAlignment(Align);
+    }
   }
 
   return true;