I intend to improve the analyzer's bug reports by tracking condition expressions.
01 bool b = messyComputation(); 02 int i = 0; 03 if (b) // control dependency of the bug site, let's explain why we assume val to be true 04 10 / i; // warn: division by zero
I'll detail this heuristic in the followup patch, strictly related to this one however:
- Create the new ControlDependencyCalculator class that uses llvm::IDFCalculator to (lazily) calculate control dependencies for Clang's CFG.
- A new debug checker debug.DumpControlDependencies is added for lit tests
- Add unittests