Uninformed: Informative Information for the Uninformed

Vol 8» 2007.Sep

Procedure Tier

Generalizing data flow paths from the basic block tier to the procedure tier further reduces the amount of information needed to show data flow behavior. Procedure tier data flow paths are meant to show how data is passed between procedures through formal parameters. This covers scenarios such as passing a procedure's formal input parameter to a child procedure's formal input parameter, using the formal output parameter of a child procedure as the formal input parameter to another called procedure, and so on. These behaviors are all represented within the context of a particular procedure.

Based on these constraints, only two classes ofbasic block data flow paths need to be considered. The first class involves data traveling from any block to a formal input or output parameter, thus showing interprocedural flows. The second class involves data traveling from a formal input or formal output parameter to a terminal point in a procedure. This effectively eliminates any intraprocedural data flows that are not carried over to another procedure in some form. Since data flow information about which formal parameters are used or defined is conveyed by basic block data flow paths, it is possible to simply generalize this data flow information to show data flowing to formal parameters within the context of a given procedure. While it may be tempting to think that one must only show data flow paths between two formal parameters, it is also necessary to show data flow paths that originate from data that is locally defined within a procedure, such as through a local variable which is not populated by a formal parameter. As such, the general form that data flow paths may take at the procedure tier is illustrated by figure 7. Figure 8 provides an example of what would happen when generalizing the basic block data flow paths described in figure 6.

Figure 7: General forms of data flow paths at the procedure tier.
Image genpath-proc

Figure 8: Procedure tier data flow paths obtained by generalizing the basic block data flow paths described in figure 4. The context for these data flow paths is the f function.
Image realpath-proc

Procedure data flow paths may generalize multiple basic block data flow paths and thus can make use of a one-to-many link table to illustrate this association. While generalizing data flow paths to the procedure tier is trivial, the challenging aspect comes when determining reachability. This will be discussed in more detail in §3.