Say I have the interprocedural control flow graph (ICFG) of a program.
Now I am only interested in the control flow between two functions f1 and f2.
- What is the most straight-forward way to remove the non-relevant part of the ICFG?
- Is there a standard performance-optimized algorithm for this task?
- Does the result, that is, the interprocedural control flow "subgraph", have a special name?
I guess it would not be appropriate to call this a "slice" because its creation is based on the control flow graph reachability but not on data dependency relations. But I am not 100% sure.
I have to clarify: I am interested in the control flow starting at function f1, optionally passing via other functions, but eventually ending at function f2. In other words, the subgraph that contains all paths in the ICFG whose start node is f1 and whose end node is f2. This also includes paths with other nodes in between f1 and f2. Sorry in case my first explanation was not clear enough.