diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-11-08 12:58:40 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-11-08 12:58:40 +0000 |
| commit | eb8692cff99612cd9bf981a22ff3acc5d72eff82 (patch) | |
| tree | 32326221745207a126399a8bb944c71eb300df1b /llvm/lib/Target/X86/X86RegisterInfo.cpp | |
| parent | dc2beaa05ed72115568bd2770fb01af0ac5079c3 (diff) | |
| download | bcm5719-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.cpp | 10 |
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 { |

