summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2018-03-08 00:14:34 +0000
committerReid Kleckner <rnk@google.com>2018-03-08 00:14:34 +0000
commitc2fd3529630d24e3b561f8d6dd5fca282616ad34 (patch)
treea6205b2ebc5e05721ab89ca9ab401ccc90655fa6 /clang/lib/Sema/SemaExpr.cpp
parentc4a13015fd6b83b802cd830f8adc9693d6392c48 (diff)
downloadbcm5719-llvm-c2fd3529630d24e3b561f8d6dd5fca282616ad34.tar.gz
bcm5719-llvm-c2fd3529630d24e3b561f8d6dd5fca282616ad34.zip
[Sema] Make getCurFunction() return null outside function parsing
Summary: Before this patch, Sema pre-allocated a FunctionScopeInfo and kept it in the first, always present element of the FunctionScopes stack. This meant that Sema::getCurFunction would return a pointer to this pre-allocated object when parsing code outside a function body. This is pretty much always a bug, so this patch moves the pre-allocated object into a separate unique_ptr. This should make bugs like PR36536 a lot more obvious. As you can see from this patch, there were a number of places that unconditionally assumed they were always called inside a function. However, there are also many places that null checked the result of getCurFunction(), so I think this is a reasonable direction. Reviewers: rsmith Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D44039 llvm-svn: 326965
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
-rw-r--r--clang/lib/Sema/SemaExpr.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 95b56a242a6..07eb02bec06 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -13126,7 +13126,7 @@ ExprResult Sema::ActOnBlockStmtExpr(SourceLocation CaretLoc,
for (const auto &CI : Result->getBlockDecl()->captures()) {
const VarDecl *var = CI.getVariable();
if (var->getType().isDestructedType() != QualType::DK_none) {
- getCurFunction()->setHasBranchProtectedScope();
+ setFunctionHasBranchProtectedScope();
break;
}
}
OpenPOWER on IntegriCloud