aaf398f26a
Passing `--pretty flowgraph=<NODEID>` makes rustc print a control flow graph. In pratice, you will also need to pass the additional option: `-o <FILE>` to emit output to a `.dot` file for graphviz. (You can only print the flow-graph for a particular block in the AST.) ---- An interesting implementation detail is the way the code puts both the node index (`cfg::CFGIndex`) and a reference to the payload (`cfg::CFGNode`) into the single `Node` type that is used for labelling and walking the graph. I had once mistakenly thought that I only wanted the `cfg::CFGNode`, but for labelling, you really want the cfg index too, rather than e.g. trying to use the `ast::NodeId` as the label (which breaks down e.g. due to `ast::DUMMY_NODE_ID`). ---- As a drive-by fix, I had to fix `rustc::middle::cfg::construct` interface to reflect changes that have happened on the master branch while I was getting this integrated into the compiler. (The next commit actually adds tests of the `--pretty flowgraph` functionality, so that should ensure that the `rustc::middle::cfg` code does not go stale again.) |
||
---|---|---|
.. | ||
clean.mk | ||
crates.mk | ||
ctags.mk | ||
dist.mk | ||
docs.mk | ||
host.mk | ||
install.mk | ||
llvm.mk | ||
main.mk | ||
perf.mk | ||
platform.mk | ||
prepare.mk | ||
reconfig.mk | ||
rt.mk | ||
rustllvm.mk | ||
snap.mk | ||
stage0.mk | ||
target.mk | ||
tests.mk | ||
util.mk |