aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/PrologEpilogInserter.cpp
diff options
context:
space:
mode:
authorNick Desaulniers <ndesaulniers@google.com>2021-06-21 15:09:23 -0700
committerNick Desaulniers <ndesaulniers@google.com>2021-06-21 15:09:25 -0700
commit8ace12130526f450c822ca232d1f865b247d7434 (patch)
tree4552bd2698f7a5e3a1b8148e8853106fc7d61770 /llvm/lib/CodeGen/PrologEpilogInserter.cpp
parent759e7977679299296a0074bc3aba693d3386eb1c (diff)
downloadllvm-8ace12130526f450c822ca232d1f865b247d7434.zip
llvm-8ace12130526f450c822ca232d1f865b247d7434.tar.gz
llvm-8ace12130526f450c822ca232d1f865b247d7434.tar.bz2
[IR] convert warn-stack-size from module flag to fn attr
Otherwise, this causes issues when building with LTO for object files that use different values. Link: https://github.com/ClangBuiltLinux/linux/issues/1395 Reviewed By: dblaikie, MaskRay Differential Revision: https://reviews.llvm.org/D104342
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);