summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86RegisterInfo.cpp
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2009-11-08 12:58:40 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2009-11-08 12:58:40 +0000
commiteb8692cff99612cd9bf981a22ff3acc5d72eff82 (patch)
tree32326221745207a126399a8bb944c71eb300df1b /llvm/lib/Target/X86/X86RegisterInfo.cpp
parentdc2beaa05ed72115568bd2770fb01af0ac5079c3 (diff)
downloadbcm5719-llvm-eb8692cff99612cd9bf981a22ff3acc5d72eff82.tar.gz
bcm5719-llvm-eb8692cff99612cd9bf981a22ff3acc5d72eff82.zip
Throw an error when stack realignment stuff fails instead of silent
code miscompilation llvm-svn: 86463
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86RegisterInfo.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp
index c5ff525bdb4..63d28218095 100644
--- a/llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp
@@ -450,12 +450,16 @@ bool X86RegisterInfo::hasFP(const MachineFunction &MF) const {
bool X86RegisterInfo::needsStackRealignment(const MachineFunction &MF) const {
const MachineFrameInfo *MFI = MF.getFrameInfo();
+ bool requiresRealignment =
+ RealignStack && (MFI->getMaxAlignment() > StackAlign);
// FIXME: Currently we don't support stack realignment for functions with
// variable-sized allocas
- return (RealignStack &&
- (MFI->getMaxAlignment() > StackAlign &&
- !MFI->hasVarSizedObjects()));
+ if (requiresRealignment && MFI->hasVarSizedObjects())
+ llvm_report_error(
+ "Stack realignment in presense of dynamic allocas is not supported");
+
+ return requiresRealignment;
}
bool X86RegisterInfo::hasReservedCallFrame(MachineFunction &MF) const {
OpenPOWER on IntegriCloud