The X86 maximal stack alignment calculator preserves the CFG. Also,
authorDan Gohman <gohman@apple.com>
Sat, 1 Aug 2009 00:31:02 +0000 (00:31 +0000)
committerDan Gohman <gohman@apple.com>
Sat, 1 Aug 2009 00:31:02 +0000 (00:31 +0000)
be more careful about the return value of runOnMachineFunction.

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

lib/Target/X86/X86RegisterInfo.cpp

index 864e33b224fa57fb92a9763464c7e0e60172dc4f..8c54aebb9ea4802463a5230ce2e70ebaa2fec040 100644 (file)
@@ -1451,14 +1451,21 @@ namespace {
            RegNum < RI.getLastVirtReg(); ++RegNum)
         MaxAlign = std::max(MaxAlign, RI.getRegClass(RegNum)->getAlignment());
 
-      FFI->setMaxAlignment(MaxAlign);
+      if (FFI->getMaxAlignment() == MaxAlign)
+        return false;
 
-      return false;
+      FFI->setMaxAlignment(MaxAlign);
+      return true;
     }
 
     virtual const char *getPassName() const {
       return "X86 Maximal Stack Alignment Calculator";
     }
+
+    virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+      AU.setPreservesCFG();
+      MachineFunctionPass::getAnalysisUsage(AU);
+    }
   };
 
   char MSAC::ID = 0;