Page MenuHomePhabricator

[analyzer] Skip printing trivial nodes in exploded graph
ClosedPublic

Authored by george.karpenkov on Sep 4 2018, 5:08 PM.

Details

Summary

A node is considered to be trivial if it only has one successor, one predecessor, and a state equal to the predecessor.
Can drastically (up to 30%) reduce the size of the generated exploded graph.

Diff Detail

Repository
rL LLVM

Event Timeline

NoQ added inline comments.Sep 5 2018, 11:54 AM
clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
246 ↗(On Diff #163950)

its

clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
3156 ↗(On Diff #163950)

* -> *.

3170 ↗(On Diff #163950)

Mmm, so would it dump all points separately and then dump all tags separately?

Maybe dump tags right after their respective points?

NoQ accepted this revision.Sep 6 2018, 4:50 PM

Yeah, something like that :)

This revision is now accepted and ready to land.Sep 6 2018, 4:50 PM

I like that we print the program points for hidden nodes :) Great work!

This revision was automatically updated to reflect the committed changes.