summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp
diff options
context:
space:
mode:
authorDevin Coughlin <dcoughlin@apple.com>2015-12-17 00:28:33 +0000
committerDevin Coughlin <dcoughlin@apple.com>2015-12-17 00:28:33 +0000
commit412c0af2b8407a6783bb3ebbd5077eefc76150bc (patch)
treef9acf64f4eba6b92ca4608a8a1b9140d7785b10f /lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp
parenteefff9ccc5c22632f67389eba6c24afece7ae5ce (diff)
downloadbcm5719-llvm-412c0af2b8407a6783bb3ebbd5077eefc76150bc.tar.gz
bcm5719-llvm-412c0af2b8407a6783bb3ebbd5077eefc76150bc.zip
[analyzer] Better detect when C++ object was constructed into existing region.
When the analyzer evaluates a CXXConstructExpr, it looks ahead in the CFG for the current block to detect what region the object should be constructed into. If the constructor was directly constructed into a local variable or field region then there is no need to explicitly bind the constructed value to the local or field when analyzing the DeclStmt or CXXCtorInitializer that called the constructor. Unfortunately, there were situations in which the CXXConstructExpr was constructed into a temporary region but when evaluating the corresponding DeclStmt or CXXCtorInitializer the analyzer assumed the object was constructed into the local or field. This led to spurious warnings about uninitialized values (PR25777). To avoid these false positives, this commit factors out the logic for determining when a CXXConstructExpr will be directly constructed into existing storage, adds the inverse logic to detect when the corresponding later bind can be safely skipped, and adds assertions to make sure these two checks are in sync. rdar://problem/21947725 llvm-svn: 255859
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud