Programs spend most of their time in loops and procedures. Therefore, most program transformations and the necessary static analyses deal with these. It has been long recognized, that di erent execution contexts for procedures may induce di erent execution properties. There are well established techniques for interprocedural analysis like the call string approach. Loops have not received similar attention in the area of data ow analysis and abstract interpretation. All executions are treated in the same way, although typically the rst and later executions may exhibit very di erent properties. In this paper a new technique is presented that allows the application of the well known and established interprocedural analysis theory to loops. It turns out that the call string approach has limited exibility in its possibilities to group several calling contexts together for the analysis. An extension to overcome this problem is presented that relies on a similar approach but gives more useful results in practice. The classical and the new techniques are implemented in our Program Analyzer Generator PAG, which is used to demonstrate our ndings by applying the techniques to several real world programs.
REF proposed applying interprocedural analysis to loops.
Analysis of Loops
In Proceedings of the 7th International Conference on Compiler Construction, volume 1383 of Lecture Notes in Computer Science
Computer Science