[PATCH] Proposal on how to fix temporary dtors.

Manuel Klimek klimek at google.com
Wed Aug 6 05:55:02 PDT 2014


Thx! Landed as r214962.

================
Comment at: lib/Analysis/CFG.cpp:3583
@@ -3512,4 +3582,3 @@
     if (Stmt *Child = *I)
-      if (CFGBlock *R = VisitForTemporaryDtors(Child))
-        B = R;
+      if (CFGBlock *R = VisitForTemporaryDtors(Child, false, Context)) B = R;
   }
----------------
Jordan Rose wrote:
> Lost a newline here.
Done.

================
Comment at: lib/StaticAnalyzer/Core/ExprEngine.cpp:681-686
@@ -663,1 +680,8 @@
   QualType varType = D.getBindTemporaryExpr()->getSubExpr()->getType();
+  for (ExplodedNode *Node : CleanDtorState) {
+    // FIXME: Inlining of temporary destructors is not supported yet anyway, so
+    // we just put a NULL region for now. This will need to be changed later.
+    VisitCXXDestructor(varType, nullptr, D.getBindTemporaryExpr(),
+                       /*IsBase=*/false, Node, Dst);
+  }
+}
----------------
Jordan Rose wrote:
> I'm not sure you're supposed to reuse `Dst` with multiple builders. However, you know there's only one node in `CleanDtorState`, so you should be able to just skip the loop.
Done.

http://reviews.llvm.org/D3627






More information about the cfe-commits mailing list