[PATCH] Proposal on how to fix temporary dtors.
Jordan Rose
jordan_rose at apple.com
Wed May 21 20:23:12 PDT 2014
================
Comment at: lib/StaticAnalyzer/Core/ExprEngine.cpp:54-56
@@ -53,1 +53,5 @@
+REGISTER_TRAIT_WITH_PROGRAMSTATE(
+ InitializedTemporariesSet,
+ llvm::ImmutableSet<const CXXBindTemporaryExpr *>);
+
----------------
Manuel Klimek wrote:
> Jordan Rose wrote:
> > This needs to include the current StackFrameContext as well (for recursive functions). You can get that from the current LocationContext.
> Can you elaborate on how I would put that into a datastructure? Just use a std::pair? (doesn't seem to work with ImmutableSet though)
>
> Also, I seem unable to write a test that breaks because of this - any hints would be highly welcome.
We'd have to write a specialization of ImutProfileInfo for std::pair, but that's probably not a bad idea anyway. Please feel free to add one to ImmutableSet.h.
I would guess the test case would look something like this:
static bool test(bool isInner) {
if (isInner || NoReturnDtor() || test(true)) {
*(volatile int *)0 = 1; // should warn
}
}
void topLevel() {
test(false);
}
http://reviews.llvm.org/D3627
More information about the cfe-commits
mailing list