NoQ added inline comments.

================
Comment at: lib/StaticAnalyzer/Core/Environment.cpp:180
-      for (; SI != SE; ++SI)
-        SymReaper.maybeDead(*SI);
     }
----------------
zaks.anna wrote:
> We are removing this because the maybeDead is no longer used, correct?
Yup.


================
Comment at: lib/StaticAnalyzer/Core/ExprEngine.cpp:390
-
-  } else {
-    // Call checkers with the non-cleaned state so that they could query the
----------------
zaks.anna wrote:
> This removes an optimization to address the following issue: 
> "removeDeadBindings is not run right after the last reference to the object 
> is lost, which leads to imprecise error reports and failure to report the 
> leak in some cases. It's because of how hasDeadSymbols() is implemented. That 
> problem is solved if we disable the optimization, but I do not know how that 
> effects performance. Maybe we can come up with something more clever.
> "
> I suspect the removal of this optimization causes the performance regression. 
> In the patch I sent to the list, this was just a hack to demonstrate what 
> causes the issue. I am not sure we should not just remove the optimization... 
> The best proposal I have is to trigger remove dead bindings at the end of 
> every basic block. This would degrade diagnostics (you will see leaks only at 
> the end of the basic block), but should give us performance back or even 
> improve performance.
> 
> Artem and Devin, WDYT?
> 
> Artem, can you experiment with this and investigate if the diagnostics become 
> much worse? Maybe send a couple of examples? I suggest we implement this mode 
> behind a flag as a separate patch.
This cannot be kept around because `.hasDeadSymbols()` cannot be implemented 
correctly.


================
Comment at: lib/StaticAnalyzer/Core/RegionStore.cpp:2452
-        SymReaper.maybeDead(*SI);
-    }
   }
----------------
zaks.anna wrote:
> Looks like we are saying that we should no longer add to maybeDead because 
> it's not used.
Yup.


https://reviews.llvm.org/D18860



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to