diff options
author | Nick Desaulniers <ndesaulniers@google.com> | 2021-06-21 15:09:23 -0700 |
---|---|---|
committer | Nick Desaulniers <ndesaulniers@google.com> | 2021-06-21 15:09:25 -0700 |
commit | 8ace12130526f450c822ca232d1f865b247d7434 (patch) | |
tree | 4552bd2698f7a5e3a1b8148e8853106fc7d61770 /llvm/lib/CodeGen/PrologEpilogInserter.cpp | |
parent | 759e7977679299296a0074bc3aba693d3386eb1c (diff) | |
download | llvm-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.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); |