[analyzer] Re-enable lifetime extension for temporaries without destructors.
authorArtem Dergachev <artem.dergachev@gmail.com>
Thu, 28 Jun 2018 00:11:42 +0000 (00:11 +0000)
committerArtem Dergachev <artem.dergachev@gmail.com>
Thu, 28 Jun 2018 00:11:42 +0000 (00:11 +0000)
commit4fb586c3494c7c9d35a77d06f4e95b059dea13ba
treeac2e4573a14b11c83659bab9c8ec5414600205c2
parentff267df0de9664fa9af06987d455ae5f02425c3f
[analyzer] Re-enable lifetime extension for temporaries without destructors.

When an object's class provides no destructor, it's less important to
materialize that object properly because we don't have to model the destructor
correctly, so previously we skipped the support for these syntax patterns.

Additionally, fix support for construction contexts of "static temporaries"
(temporaries that are lifetime-extended by static references) because
it turned out that we only had tests for them without destructors, which caused
us to regress when we re-introduced the construction context for such
temporaries.

Differential Revision: https://reviews.llvm.org/D47658

llvm-svn: 335796
clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
clang/test/Analysis/lifetime-extension.cpp
clang/test/Analysis/temporaries-callback-order.cpp