A Path-Sensitively Sliced Control Flow Graph
Joxan Jaffar and Vijayaraghavan Murali
Abstract
We present a new graph representation of programs with specified
target variables. These programs are intended to be processed by
third-party applications querying target variables such as testers and
verifiers. The representation embodies two concepts. First, it is
path-sensitive in the sense that multiple nodes representing one
program point may exist so that infeasible paths can be
excluded. Second, and more importantly, it is sliced with respect to
the target variables. This key step is founded on a novel idea
introduced in this paper, called Tree Slicing, and on the fact that
slicing is more effective when there is path sensitivity. Compared to
the traditional Control Flow Graph (CFG), the new graph may be bigger
(due to path-sensitivity) or smaller (due to slicing). We show that it
is not much bigger in practice, if at all. The main result however
concerns its quality: third-party testers and verifiers perform
substantially better on the new graph compared to the original CFG.