]> granicus.if.org Git - clang/commit
[analyzer] Support inlining lambda-converted blocks.
authorDevin Coughlin <dcoughlin@apple.com>
Fri, 4 Dec 2015 05:00:36 +0000 (05:00 +0000)
committerDevin Coughlin <dcoughlin@apple.com>
Fri, 4 Dec 2015 05:00:36 +0000 (05:00 +0000)
commit9d545ef730d0252109fd9442f4a47aa1de3d050e
tree9b9455636f431418c4658429470e3f42e00727fc
parentb659b7b860e586f38438b12eeaa417d41028fe63
[analyzer] Support inlining lambda-converted blocks.

clang converts C++ lambdas to blocks with an implicit user-defined conversion
operator method on the lambda record. This method returns a block that captures a copy
of the lambda. To inline a lambda-converted block, the analyzer now calls the lambda
records's call operator method on the lambda captured by the block.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@254702 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
lib/StaticAnalyzer/Core/CallEvent.cpp
lib/StaticAnalyzer/Core/ExprEngineC.cpp
lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
test/Analysis/lambdas.mm