Page MenuHomePhabricator

[analyzer] Experiment with an iteration order only based on location, and not using the stack frame

Authored by george.karpenkov on Oct 9 2018, 6:42 PM.

Diff Detail


Event Timeline

I remember when I joined the project how my team used to analyze projects with every iteration order to which is the best, so I think this patch will be appreciated.

61 ↗(On Diff #168933)

Completely unrelated to this revision, but this class needs some doc desperately IMO :/

258 ↗(On Diff #168933)

CFGBlock::getBlockID returns with an unsigned int, did you mean this to be signed? I don't mean to be a living and breathing clang-tidy, but you explicitly mentioned using signed integer in the comment below.

272 ↗(On Diff #168933)

I believe some bots like to complain if you don't make operator() const.

299 ↗(On Diff #168933)

How about queue.push({U, {-NumVisited, ++Counter}});?

NoQ added a comment.Oct 10 2018, 3:35 PM

Let's see how it goes!

That's a lot of code duplication, i guess it might make sense to refactor later.

258 ↗(On Diff #168933)

No, it doesn't need to be int; the comment below is about the other int.

NoQ accepted this revision.Oct 10 2018, 3:36 PM
This revision is now accepted and ready to land.Oct 10 2018, 3:36 PM
This revision was automatically updated to reflect the committed changes.
NoQ added a comment.Oct 11 2018, 5:43 PM

A few post-commit thoughts.


I usually imagine queue as a horizontal thing, so it's unclear to me whether "top" is "left" or "right".


Does this mean that Block 1 in foo() and Block 1 in bar() will always have the same NumReached value?


That's a great point. Pushing an update.