In fact, we believe that (at least in the intraprocedural case) precise flow-insensitive may-alias analysis becomes polynomial even with arbitrary levels of pointer indirection (maintaining the restriction that there is no dynamic memory allocation
) if the number of levels of dereferencing (i.e., the maximum number of staxs in an expression) is restricted to some fixed k.
The constraint of static memory allocation is a fundamental flaw because the most general kind of computational process (a Turing Machine process) requires dynamic memory allocation
. This requirement distinguishes the Turing Machine from the Finite-Automaton in the theory of computation; the latter is characterized by static memory allocation.
The suggested improvements to this program emphasize the use of dynamic memory allocation
and the replacement of external variables with automatic variables.