Advertisement

Points-to and Side-Effect Analyses for Programs Built with Precompiled Libraries

  • Atanas Rountev
  • Barbara G. Ryder
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2027)

Abstract

Large programs are typically built from separate modules. Traditional whole-program analysis cannot be used in the context of such modular development. In this paper we consider analysis for programs that combine client modules with precompiled library modules.We define separate analyses that allow library modules and client modules to be analyzed separately from each other. Our target analyses are Andersen’s points-to analysis for C [1] and a side-effect analysis based on it. We perform separate points-to and side-effect analyses of a library module by using worst-case assumptions about the rest of the program. We also show how to construct summary information about a library module and how to use it for separate analysis of client modules. Our empirical results show that the separate points-to analyses are practical even for large modules, and that the cost of constructing and storing library summaries is low. This work is a step toward incorporating practical points-to and side-effect analyses in realistic compilers and software productivity tools.

Keywords

Auxiliary Statement Call Graph Complete Program Library Module Program Language Design 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. 1.
    L. Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen, 1994.Google Scholar
  2. 2.
    R. Chatterjee, B. G. Ryder, and W. Landi. Relevant context inference. In Symposium on Principles of Programming Languages, pages 133–146, 1999.Google Scholar
  3. 3.
    B. Cheng and W. Hwu. Modular interprocedural pointer analysis using access paths. In Conference on Programming Language Design and Implementation, pages 57–69, 2000.Google Scholar
  4. 4.
    J. Choi, M. Gupta, M. Serrano, V. Sreedhar, and S. Midkiff. Escape analysis for Java. In Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 1–19, 1999.Google Scholar
  5. 5.
    M. Das. Unification-based pointer analysis with directional assignments. In Conference on Programming Language Design and Implementation, pages 35–46, 2000.Google Scholar
  6. 6.
    M. Fahndrich, J. Foster, Z. Su, and A. Aiken. Partial online cycle elimination in inclusion constraint graphs. In Conference on Programming Language Design and Implementation, pages 85–96, 1998.Google Scholar
  7. 7.
    C. Flanagan and M. Felleisen. Componential set-based analysis. ACM Trans. Programming Languages and Systems, 21(2):370–416, Mar. 1999.CrossRefGoogle Scholar
  8. 8.
    S. Guyer and C. Lin. Optimizing the use of high performance software libraries. In Workshop on Languages and Compilers for Parallel Computing, 2000.Google Scholar
  9. 9.
    M. J. Harrold and G. Rothermel. Separate computation of alias information for reuse. IEEE Trans. Software Engineering, 22(7):442–460, July 1996.CrossRefGoogle Scholar
  10. 10.
    M. Hind and A. Pioli. Which pointer analysis should I use? In International Symposium on Software Testing and Analysis, pages 113–123, 2000.Google Scholar
  11. 11.
    A. Rountev and S. Chandra. Off-line variable substitution for scaling points-to analysis. In Conference on Programming Language Design and Implementation, pages 47–56, 2000.Google Scholar
  12. 12.
    A. Rountev and B. G. Ryder. Points-to and side-effect analyses for programs built with precompiled libraries. Technical Report 423, Rutgers University, Oct. 2000.Google Scholar
  13. 13.
    A. Rountev and B. G. Ryder. Practical points-to analysis for programs built with libraries. Technical Report 410, Rutgers University, Feb. 2000.Google Scholar
  14. 14.
    A. Rountev, B. G. Ryder, and W. Landi. Data-flow analysis of program fragments. In Symposium on the Foundations of Software Engineering, LNCS 1687, 1999.Google Scholar
  15. 15.
    B. G. Ryder, W. Landi, P. Stocks, S. Zhang, and R. Altucher. A schema for interprocedural side effect analysis with pointer aliasing. Technical Report 336, Rutgers University, May 1998. To appear in ACM TOPLAS.Google Scholar
  16. 16.
    M. Shapiro and S. Horwitz. The effects of the precision of pointer analysis. In Static Analysis Symposium, LNCS 1302, pages 16–34, 1997.CrossRefGoogle Scholar
  17. 17.
    M. Shapiro and S. Horwitz. Fast and accurate flow-insensitive points-to analysis. In Symposium on Principles of Programming Languages, pages 1–14, 1997.Google Scholar
  18. 18.
    B. Steensgaard. Points-to analysis in almost linear time. In Symposium on Principles of Programming Languages, pages 32–41, 1996.Google Scholar
  19. 19.
    P. Sweeney and F. Tip. Extracting library-based object-oriented applications. In Symposium on the Foundations of Software Engineering, pages 98–107, 2000.Google Scholar
  20. 20.
    J. Whaley and M. Rinard. Compositional pointer and escape analysis for Java programs. In Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 187–206, 1999.Google Scholar
  21. 21.
    S. Zhang, B. G. Ryder, and W. Landi. Program decomposition for pointer aliasing: A step towards practical analyses. In Symposium on the Foundations of Software Engineering, pages 81–92, 1996.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • Atanas Rountev
    • 1
  • Barbara G. Ryder
    • 1
  1. 1.Department of Computer ScienceRutgers UniversityPiscatawayUSA

Personalised recommendations