The framework associates pointer alias information (represented as sets of aliases) with various points in the program.
Structural and reference parameter aliases are incorporated as needed, for correctness.
For each procedure, f, the interprocedural phase supplies the sets [Entry.sub.f] and [Exit.sub.f], which correspond to the aliases that hold on entry to f and on exit from f, respectively.
This computation requires three input components: the transfer function for each node that contains a (potential) pointer assignment, the set of aliases holding at the [N.sub.Entry] node of the SEG (the Entry for the procedure), and the BackwardBind sets corresponding to call-site nodes in the SEG.
Must captures the set of must aliases returned by ComputeAliases.
Consider the assignment "*p = p," with the aliases <*p, a>, <*p, b> holding before the assignment.
However, the last two aliases cannot hold because p can only point to a or b, but not both, during a single execution.
The aliases holding at the [N.sub.Entry] node and the call-site nodes are interprocedurally computed, as described in Section 3.2.1.
To preserve correctness, conservative assumptions (all possible interprocedurally induced aliases) would be used at points where no information is available, such as the [N.sub.Exit] node of unavailable procedures.(9) Scoping rules can be used to improve these worst-case assumptions.
With this information for each node and each edge of the PCG as input, the flow-insensitive interprocedural alias analysis represents the effects of a procedure f, by computing [PGen.sub.f], the set of aliases generated by the invocation of f.(10) This differs from the flow-sensitive algorithm, which represents the effects of a procedure by recording the alias information that holds on exit from a procedure.
--[Entry.sub.f], the set of aliases that hold upon entry to procedure f;
--[Holds.sub.f], the set of aliases that may hold at any point in f;
--[IGen.sub.f], the set of aliases generated by all of the pointer-assignment statements of procedure f;
--[CSGen.sub.f], the set of aliases generated by call sites in the procedure f.
(This graph is not actually built.) The alias graph labeled (C) specifies the aliases that result from the intraprocedural computation, assuming no aliases are in the Entry set.