forked from OSchip/llvm-project
Reduce stack usage of TreeTransform.
Without this patch, TreeTransform::TransformExpr uses a ridiculous amount of stack space (around 5000 bytes). Preventing inlining brings the stack usage down to something sane. On a testcase I have, on my computer, this allows changing -ftemplate-depth from 210 to around 750 before we crash. I'm not sure I should commit the testcase, though: I don't want to cause test failures on platforms with less stack space available. <rdar://problem/14098189>. llvm-svn: 190114
This commit is contained in:
parent
8227b9f69c
commit
bc8c734fa7
|
@ -598,14 +598,19 @@ public:
|
|||
ExprResult TransformDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E,
|
||||
bool IsAddressOfOperand);
|
||||
|
||||
// FIXME: We use LLVM_ATTRIBUTE_NOINLINE because inlining causes a ridiculous
|
||||
// amount of stack usage with clang.
|
||||
#define STMT(Node, Parent) \
|
||||
LLVM_ATTRIBUTE_NOINLINE \
|
||||
StmtResult Transform##Node(Node *S);
|
||||
#define EXPR(Node, Parent) \
|
||||
LLVM_ATTRIBUTE_NOINLINE \
|
||||
ExprResult Transform##Node(Node *E);
|
||||
#define ABSTRACT_STMT(Stmt)
|
||||
#include "clang/AST/StmtNodes.inc"
|
||||
|
||||
#define OPENMP_CLAUSE(Name, Class) \
|
||||
LLVM_ATTRIBUTE_NOINLINE \
|
||||
OMPClause *Transform ## Class(Class *S);
|
||||
#include "clang/Basic/OpenMPKinds.def"
|
||||
|
||||
|
|
Loading…
Reference in New Issue