skip to main content
10.1145/1375581.1375613acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis

Published:07 June 2008Publication History

ABSTRACT

We propose a framework for improving both the scalability as well as the accuracy of pointer alias analysis, irrespective of its flow or context-sensitivities, by leveraging a three-pronged strategy that effectively combines divide and conquer, parallelization and function summarization. A key step in our approach is to first identify small subsets of pointers such that the problem of computing aliases of any pointer can be reduced to computing them in these small subsets instead of the entire program. In order to identify these subsets, we first apply a series of increasingly accurate but highly scalable (context and flow-insensitive) alias analyses in a cascaded fashion such that each analysis Ai works on the subsets generated by the previous one Ai-1. Restricting the application of Ai to subsets generated by Ai-1, instead of the entire program, improves it scalability, i.e., Ai is bootstrapped by Ai-1. Once these small subsets have been computed, in order to make our overall analysis accurate, we employ our new summarization-based flow and context-sensitive alias analysis. The small size of each subset offsets the higher computational complexity of the context-sensitive analysis. An important feature of our framework is that the analysis for each of the subsets can be carried out independently of others thereby allowing us to leverage parallelization further improving scalability.

References

  1. Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. In PhD. Thesis, DIKU, 1994.]]Google ScholarGoogle Scholar
  2. Marc Berndl, Ondrej Lhoták, Feng Qian, Laurie J. Hendren, and NavindraUmanee. Points-to analysis using BDDs. In PLDI, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Manuvir Das. Unification-based pointer analysis with directional assignments. In PLDI, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Manuvir Das, Ben Liblit, Manuel F"ahndrich, and Jakob Rehof. Estimating the impact of scalable pointer analysis on optimization. In SAS, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Maryam Emami, Rakesh Ghiya, and Laurie J. Hendren. Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers. In PLDI, 1994.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Manuel Fähndrich, Jakob Rehof, and Manuvir Das. Scalable context-sensitive flow analysis using instantiation constraints. In PLDI, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Jeffrey S. Foster, Manuel Fähndrich, and Alexander Aiken. Polymorphic versus Monomorphic Flow-Insensitive Points-to Analysis for C. In SAS, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Brian Hackett and Alex Aiken. How is aliasing used in systems software? In FSE, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. B. Hardekof and C. Lin. The ant and the grasshopper: fast and accurate pointer analysis for million lines of code. In PLDI, 2007.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Nevin Heintze and Olivier Tardieu. Ultra-fast Aliasing Analysis using CLA: A Million Lines of C Code in a Second. In PLDI, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Ondrej Lhoták and Laurie J. Hendren. Scaling Java Points-to Analysis Using SPARK. In CC, 2003.]]Google ScholarGoogle Scholar
  12. Barbara G. Ryder, Willian Landi, Phil Stocks, Sean Zhang, and Rita Al-tucher. A Schema for Interprocedural Modification Side-Effect Analysis with Pointer Aliasing. In ACM Trans. Program. Lang. Sys., volume 23,pages 105--186, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Bjarne Steensgaard. Points-to Analysis in Almost Linear Time. In POPL, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. John Whaley and Monica S. Lam. An Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages. In SAS, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. John Whaley and Monica S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. John Whaley and Martin C. Rinard. Compositional Pointer and Escape Analysis for Java Programs. In OOPSLA, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. John Whaley, C. Unkel, and M. Lam. A BDD-based deductive database for program analysis. In http://suif.stanford.edu/bddbddb, 2004.]]Google ScholarGoogle Scholar
  18. Robert P. Wilson and Monica S. Lam. Efficient Context Sensitive Pointer Analysis for C Programs. In PLDI, 1995.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. S. Zhang, B. G. Ryder, and W. Landi. Program Decomposition for Pointer Aliasing: A Step Towards Practical Analyses. In FSE, 1996.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Jianwen Zhu. Symbolic pointer analysis. In ICCAD, pages 150--157, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Jianwen Zhu and Silvian Calman. Context sensitive symbolic pointer analysis. In IEEE Trans. on CAD of Integrated Circuits and Systems, volume 24, pages 516--531, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!