summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2016-07-09 12:16:58 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2016-07-09 12:16:58 +0000
commit6ec90ec2ab69bff816bff52ec02151fe82be8147 (patch)
treeaebec4dba28f257166318b850232f53f3d0b6548 /clang/lib/StaticAnalyzer
parent951a6287c7ec5f8b1ab6391adee55770f9d9cf67 (diff)
downloadbcm5719-llvm-6ec90ec2ab69bff816bff52ec02151fe82be8147.tar.gz
bcm5719-llvm-6ec90ec2ab69bff816bff52ec02151fe82be8147.zip
[analyzer] Older version of GCC 4.7 crash on lambdas in default arguments.
llvm-svn: 274975
Diffstat (limited to 'clang/lib/StaticAnalyzer')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp
index 4060f01582a..fc2ab1d6e3f 100644
--- a/clang/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp
@@ -141,15 +141,15 @@ private:
return false;
}
- const Decl *getDecl(const DeclRefExpr *DR) { return DR->getDecl(); }
-
- const Decl *getDecl(const MemberExpr *ME) { return ME->getMemberDecl(); }
+ static const Decl *getDecl(const DeclRefExpr *DR) { return DR->getDecl(); }
+ static const Decl *getDecl(const MemberExpr *ME) {
+ return ME->getMemberDecl();
+ }
template <typename T1>
void Erase(const T1 *DR,
- llvm::function_ref<bool(const MallocOverflowCheck &)> Pred =
- [](const MallocOverflowCheck &) { return true; }) {
- auto P = [this, DR, Pred](const MallocOverflowCheck &Check) {
+ llvm::function_ref<bool(const MallocOverflowCheck &)> Pred) {
+ auto P = [DR, Pred](const MallocOverflowCheck &Check) {
if (const auto *CheckDR = dyn_cast<T1>(Check.variable))
return getDecl(CheckDR) == getDecl(DR) && Pred(Check);
return false;
@@ -159,11 +159,12 @@ private:
}
void CheckExpr(const Expr *E_p) {
+ auto PredTrue = [](const MallocOverflowCheck &) { return true; };
const Expr *E = E_p->IgnoreParenImpCasts();
if (const DeclRefExpr *DR = dyn_cast<DeclRefExpr>(E))
- Erase<DeclRefExpr>(DR);
+ Erase<DeclRefExpr>(DR, PredTrue);
else if (const auto *ME = dyn_cast<MemberExpr>(E)) {
- Erase<MemberExpr>(ME);
+ Erase<MemberExpr>(ME, PredTrue);
}
}
OpenPOWER on IntegriCloud