diff options
author | Nadav Rotem <nrotem@apple.com> | 2012-09-19 08:08:04 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2012-09-19 08:08:04 +0000 |
commit | 92df026f0da91dc65ef6186e97ff87b1f53e8cd0 (patch) | |
tree | 3234226bbf5d5452d9ae30dad950408a61de4757 /include | |
parent | 93ba133906da4b12a7c732b897e64541cc570120 (diff) | |
download | llvm-92df026f0da91dc65ef6186e97ff87b1f53e8cd0.tar.gz llvm-92df026f0da91dc65ef6186e97ff87b1f53e8cd0.tar.bz2 llvm-92df026f0da91dc65ef6186e97ff87b1f53e8cd0.tar.xz |
Prevent inlining of callees which allocate lots of memory into a recursive caller.
Example:
void foo() {
... foo(); // I'm recursive!
bar();
}
bar() { int a[1000]; // large stack size }
rdar://10853263
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164207 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Analysis/InlineCost.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/llvm/Analysis/InlineCost.h b/include/llvm/Analysis/InlineCost.h index 0cba135222..f8de533506 100644 --- a/include/llvm/Analysis/InlineCost.h +++ b/include/llvm/Analysis/InlineCost.h @@ -36,6 +36,9 @@ namespace llvm { const int LastCallToStaticBonus = -15000; const int ColdccPenalty = 2000; const int NoreturnPenalty = 10000; + /// Do not inline functions which allocate this many bytes on the stack + /// when the caller is recursive. + const int TotalAllocaSizeRecursiveCaller = 1024; } /// \brief Represents the cost of inlining a function. |