]> granicus.if.org Git - clang/commit
[analyzer] Inline constructors for any object with a trivial destructor.
authorJordan Rose <jordan_rose@apple.com>
Mon, 27 Aug 2012 17:50:07 +0000 (17:50 +0000)
committerJordan Rose <jordan_rose@apple.com>
Mon, 27 Aug 2012 17:50:07 +0000 (17:50 +0000)
commitc210cb7a358d14cdd93b58562f33ff5ed2d895c1
tree3e97742793c7a88ed7377cfc8ac1476474bc37c0
parentbe22cb84f32cfa6cf0b6bdaf523288b747bb0f18
[analyzer] Inline constructors for any object with a trivial destructor.

This allows us to better reason about status objects, like Clang's own
llvm::Optional (when its contents are trivially destructible), which are
often intended to be passed around by value.

We still don't inline constructors for temporaries in the general case.

<rdar://problem/11986434>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162681 91177308-0d34-0410-b5e6-96231b3b80d8
lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp
lib/StaticAnalyzer/Core/ExprEngine.cpp
lib/StaticAnalyzer/Core/ExprEngineC.cpp
lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
test/Analysis/base-init.cpp
test/Analysis/method-call.cpp
test/Analysis/new.cpp