[analyzer] Make sure a temporary object region matches its initial bindings.
authorJordan Rose <jordan_rose@apple.com>
Thu, 21 Feb 2013 23:57:17 +0000 (23:57 +0000)
committerJordan Rose <jordan_rose@apple.com>
Thu, 21 Feb 2013 23:57:17 +0000 (23:57 +0000)
commitfe03e40d837ed2291de7f667d760709358f50c1f
tree0e80ffb010902df74846b0ee07a711cc29e711af
parent676a48751d9acc6370ea30ae87062c3c4bd5e347
[analyzer] Make sure a temporary object region matches its initial bindings.

When creating a temporary region (say, when a struct rvalue is used as
the base of a member expr), make sure we account for any derived-to-base
casts. We don't actually record these in the LazyCompoundVal that
represents the rvalue, but we need to make sure that the temporary region
we're creating (a) matches the bindings, and (b) matches its expression.

Most of the time this will do exactly the same thing as before, but it
fixes spurious "garbage value" warnings introduced in r175234 by the use
of lazy bindings to model trivial copy constructors.

<rdar://problem/13265460>

llvm-svn: 175830
clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
clang/test/Analysis/temporaries.cpp