CFG extraction


I would like to extract Control Flow Graph and Data Flow Graph from a sample program written in C++, Can anybody please direct me to some examples?
Thanks in advance


I know the MachineBasicBlock has some nice predecessor and successor iterators. See MachineBasicBlock::pred_iterator and MachineBasicBlock::succ_iterator for those iterators.

-Jeff Kunkel


to get the CFG's use this command.

clang++ -S -emit-llvm program.cpp
opt -view-cfg program.s

This needs the graphviz package to be installed as the dotty program is called.

To just extract the dot files of the CFG use:

opt -dot-cfg program.s

If you use -dot-cfg-only -view-cfg-only the CFG does not contain the statements of each bb.

I do not know if there is any DataFlowGraph available in LLVM.