summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-08-01 00:31:02 +0000
committerDan Gohman <gohman@apple.com>2009-08-01 00:31:02 +0000
commit92aa4045d27fa50c02488f8d5131322c19329795 (patch)
tree72d7765054e975084fe4ac472779c8e31e9106a7
parentdf09055cdb124a0d53258ad09d3a1d62bdb7dd19 (diff)
downloadexternal_llvm-92aa4045d27fa50c02488f8d5131322c19329795.zip
external_llvm-92aa4045d27fa50c02488f8d5131322c19329795.tar.gz
external_llvm-92aa4045d27fa50c02488f8d5131322c19329795.tar.bz2
The X86 maximal stack alignment calculator preserves the CFG. Also,
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
-rw-r--r--lib/Target/X86/X86RegisterInfo.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp
index 864e33b..8c54aeb 100644
--- a/lib/Target/X86/X86RegisterInfo.cpp
+++ b/lib/Target/X86/X86RegisterInfo.cpp
@@ -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;