analyzer: support reverse direction in shortest-paths.h
authorDavid Malcolm <dmalcolm@redhat.com>
Thu, 11 Mar 2021 22:45:10 +0000 (17:45 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Thu, 11 Mar 2021 22:45:10 +0000 (17:45 -0500)
commit5e33e5b042a6a830c40cee3d0a925bc49dcfe069
tree65f3ab1dcfe34675960c710ed78b202e07783992
parent3f958348e78f38d91f0611618bb909182170c0f3
analyzer: support reverse direction in shortest-paths.h

This patch generalizes shortest-path.h so that it can be used to
find the shortest path from each node to a given target node (on top
of the existing support for finding the shortest path from a given
origin node to each node).

I've marked this as "analyzer" as this is the only code using
shortest-paths.h.

This patch is required by followup work to fix PR analyzer/96374.

gcc/analyzer/ChangeLog:
* diagnostic-manager.cc (epath_finder::epath_finder):
Update shortest_paths init for new param.

gcc/ChangeLog:
* digraph.cc (selftest::test_shortest_paths): Update
shortest_paths init for new param.  Add test of
SPS_TO_GIVEN_TARGET.
* shortest-paths.h (enum shortest_path_sense): New.
(shortest_paths::shortest_paths): Add "sense" param.
Update for renamings.  Generalize to use "sense" param.
(shortest_paths::get_shortest_path): Rename param.
(shortest_paths::m_sense): New field.
(shortest_paths::m_prev): Rename...
(shortest_paths::m_best_edge): ...to this.
(shortest_paths::get_shortest_path): Update for renamings.
Conditionalize flipping of path on sense of traversal.
gcc/analyzer/diagnostic-manager.cc
gcc/digraph.cc
gcc/shortest-paths.h