The first phase of any program analysis using this framework yields
a transfer function for each region in a problem-specific form.
For each analysis, a representation for transfer functions
with the following operations must be provided:
)
)
), with identity value (
)
): yield effect after i iterations,
where i is the loop's normalized index variable.
): eliminate the most recent loop index
variable to describe the effect of the entire loop.
:
map procedure transfer function into caller space
The first phase computes relative information that summarizes the behavior of each region. To compute absolute information, a second phase may optionally be performed. The second phase determines absolute information on entry to each procedure and region, using the transfer functions found in the first phase to propagate a problem-specific data-flow value. A representation for this value must be provided, along with the following operations:
)
), with identity value (
)
: map call context
into procedure space
: remove information
not relevant to Proc
: equivalence relation on procedure contexts