Experiments with algorithms for flow-insensitive, context-insensitive pointer analysis developed by Lars Andersen and Bjarne Steensgaard indicate that neither is likely to scale up well enough to be applied to large programs (hundreds of thousands of lines). Steensgaard's algorithm produces results that are too conservative (i.e., the points-to sets tend to be quite large, which in turn leads to overly conservative results in subsequent analyses that make use of the points-to information). While Andersen's algorithm produces much better results, it seems to be limited by its space requirements.
In this talk, we explore techniques for modular pointer analysis: analyzing small pieces of the program (e.g., individual functions or files), then combining the results of the individual analyses. We expect a modular approach to have two important benefits: