[PATCH] D103630: [analyzer] Refactor trackRValueExpression into ExpressionHandler

Valeriy Savchenko via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 14 06:02:04 PDT 2021


vsavchenko added inline comments.


================
Comment at: clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:2263-2264
 Tracker::Tracker(PathSensitiveBugReport &Report) : Report(Report) {
   addHighPriorityHandler<DefaultExpressionHandler>();
+  addLowPriorityHandler<PRValueHandler>();
   // TODO: split trackExpressionValue and FindLastStoreBRVisitor into handlers
----------------
Szelethus wrote:
> I checked this commit out, and failed to see how these low/high priority handlers work out in practice. I tried to
> * Make the default handler low prio as well
> * Make the PRValue high prio
> * All other combinations of the those values
> * Change the order of adding these handlers
> 
> No tests failed. Is there any one patch so far that demonstrates why we need this? A unit test?
add with high priority == add to the beginning of the queue
add with low priority == add to the end of the queue

This means that it doesn't matter with what priority we add the very first one.
I guess with these two it doesn't matter which order they have one against another, that's why tests don't fail.  This code here keeps the same order it was originally in `trackExpressionValue` to maintain parity.

In the future commits, `InterestingLValueHandler` HAVE TO BE before before `DefaultExpressionHandler` and there are tests that validate it.  Actually this is the only place that I know that really cares about the order and that's why I needed to add priorities and the way for one handler to cancel all further handlers.

Does this answer your question?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103630/new/

https://reviews.llvm.org/D103630



More information about the cfe-commits mailing list