6.5 CFG on Clang
A CFG is the basic data structure for advanced static analysis using Clang tools. Clang constructs the CFG for a function from its AST, identifying basic blocks and control flow edges. Clang’s CFG construction handles various C/C++ constructs, including loops, conditional statements, switch cases, and complex constructs such as setjmp/longjmp
and C++ exceptions. Let’s consider the process using our example from Figure 6.1.
6.5.1 CFG construction by example
Our example from Figure 6.1 has five nodes, as shown in Figure 6.2. Lets run a debugger to investigate the process, as follows:
1$ lldb <...>/llvm-project/install/bin/clang-tidy -- \
2 -checks="-*,misc-cyclomaticcomplexity" ...