aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/PrologEpilogInserter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/PrologEpilogInserter.cpp')
-rw-r--r--llvm/lib/CodeGen/PrologEpilogInserter.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/PrologEpilogInserter.cpp b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
index e09face1..e745f56 100644
--- a/llvm/lib/CodeGen/PrologEpilogInserter.cpp
+++ b/llvm/lib/CodeGen/PrologEpilogInserter.cpp
@@ -274,7 +274,16 @@ bool PEI::runOnMachineFunction(MachineFunction &MF) {
MachineFrameInfo &MFI = MF.getFrameInfo();
uint64_t StackSize = MFI.getStackSize();
- unsigned Threshold = MF.getFunction().getParent()->getWarnStackSize();
+ unsigned Threshold = UINT_MAX;
+ if (MF.getFunction().hasFnAttribute("warn-stack-size")) {
+ bool Failed = MF.getFunction()
+ .getFnAttribute("warn-stack-size")
+ .getValueAsString()
+ .getAsInteger(10, Threshold);
+ // Verifier should have caught this.
+ assert(!Failed && "Invalid warn-stack-size fn attr value");
+ (void)Failed;
+ }
if (StackSize > Threshold) {
DiagnosticInfoStackSize DiagStackSize(F, StackSize);
F.getContext().diagnose(DiagStackSize);