Make graph dumping work for fn != cfun
authorRichard Biener <rguenther@suse.de>
Fri, 28 Jan 2022 09:28:39 +0000 (10:28 +0100)
committerRichard Biener <rguenther@suse.de>
Fri, 28 Jan 2022 10:28:09 +0000 (11:28 +0100)
commitb500d2591ea0080459d5dee127f63c010530f6b6
treeb386e601c3e57f56cab6d98d20eb523f71c06015
parentb16a3dea1d1bfa3dde556af84b3592140320b605
Make graph dumping work for fn != cfun

The following makes dumping of a function as graph work as intended
when specifying a function other than cfun.  Unfortunately the loop
and the dominance APIs are not set up to work for other functions
than cfun so you won't get any fancy loop dumps but the non-loop
dump works up to reaching mark_dfs_back_edges which I trivially made
function aware and adjusted current callers with a wrapper.

With all this, doing dot-fn id->src_cfun from the debugger when
debugging inlining works.  Previously you got a strange mix of
the src and dest functions visualized ;)

2022-01-28  Richard Biener  <rguenther@suse.de>

* cfganal.h (mark_dfs_back_edges): Provide API with struct
function argument.
* cfganal.cc (mark_dfs_back_edges): Take a struct function
to work on, add a wrapper passing cfun.
* graph.cc (draw_cfg_nodes_no_loops): Replace stray cfun
uses with fun which is already passed.
(draw_cfg_edges): Likewise.
(draw_cfg_nodes_for_loop): Do not use draw_cfg_nodes_for_loop
for fun != cfun.
gcc/cfganal.cc
gcc/cfganal.h
gcc/graph.cc