Ah, right. Two types in tests makes sense. (There are ways around it but this 
is simple enough.)

  Main comment is about handling null; other than that this is looking good. 
I'm not sure you'll be able to easily test the null-handling, either...perhaps 
something reinterpret_cast'ed into a NoReturnDtor *?

  Also, nitpick: it'd be nice if the tests followed LLVM formatting as well.


================
Comment at: lib/StaticAnalyzer/Core/ExprEngineCXX.cpp:303-309
@@ -302,1 +302,9 @@
 
+  // If the memory region to be invalidated is null do not call the
+  // destructors. Return a node with state same as previous node.
+  if (!Dest) {
+    StmtNodeBuilder Bldr(Pred, Dst, *currBldrCtx);
+    Bldr.generateNode(S, Pred, State);
+    return;
+  }
+  
----------------
This isn't quite right either -- DestVal could easily be Unknown, or (in 
theory, anyway) a SymbolicRegion whose symbol is known to be 0. I think you 
actually have to check here -- ProgramState::isNull is probably what you 
want...or even a proper assume(), since if we do run the destructor we "know" 
the region was not null.


http://llvm-reviews.chandlerc.com/D1594
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to