[cfe-dev] Control-Flow Graphs (CFGs)

Ted Kremenek kremenek at apple.com
Wed Aug 29 16:40:41 PDT 2007

clang now has support for source level control-flow graphs (CFGs).   
You can see them in action now by checking out the following new  
command-line options to the clang driver:

• -dump-cfg: builds ASTs and then CFGs.  CFGs are then pretty-printed.
• -view-cfg: builds ASTs and then CFGs.  CFGs are then visualized by  
invoking Graphviz.

A noteworthy feature of these CFGs is that they explicitly represent  
control-flow for:

• The ternary ? operator
• Short-circuit operators '&&' and '||'
• GCC-style "indirect" gotos (via taking the address of a label).

We are still working out the details of CFGs, but the interface/API  
for CFGs can be found in 'include/AST/CFG.h'.  More features (and bug- 
fixes) are likely to be added/made in the short-term.

NOTE: For help on getting Graphviz to work with clang/LLVM, see: http://llvm.org/docs/ProgrammersManual.html#ViewGraph

More information about the cfe-dev mailing list