diff options
Diffstat (limited to 'llvm/lib/CodeGen/PrologEpilogInserter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/PrologEpilogInserter.cpp | 11 |
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); |