Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Open access

An improved bound for call strings based interprocedural analysis of bit vector frameworks

Published: 01 October 2007 Publication History

Abstract

Interprocedural data flow analysis extends the scope of analysis across procedure boundaries in search of increased optimization opportunities. Call strings based approach is a general approach for performing flow and context sensitive interprocedural analysis. It maintains a history of calls along with the data flow information in the form of call strings, which are sequences of unfinished calls. Recursive programs may need infinite call strings for interprocedural data flow analysis. For bit vector frameworks this method is believed to require all call strings of lengths up to 3K, where K is the maximum number of distinct call sites in any call chain.
We combine the nature of information flows in bit-vector data flow analysis with the structure of interprocedurally valid paths to bound the call strings. Instead of bounding the length of call strings, we bound the number of occurrences of any call site in a call string. We show that the call strings in which a call site appears at most three times, are sufficient for convergence on interprocedural maximum fixed point solution. Though this results in the same worst case length of call strings, it does not require constructing all call strings up to length 3K. Our empirical measurements on recursive programs show that our bound reduces the lengths and the number of call strings, and hence the analysis time, significantly.

References

[1]
Aho, A. V., Sethi, R., and Ullman, J. D. 1986. Compilers: Principles, Techniques, and Tools. Addison-Wesley Longman Publishing Co., Inc., Boston, MA.
[2]
Alt, M. and Martin, F. 1995. Generation of Efficient Interprocedural Analyzers with PAG. In Proceedings of Static Analysis Symposium (SAS'95), Lecture Notes in Computer Science, vol. 983, Springer, 33--50.
[3]
Alt, M., Martin, F., and Wilhelm, R. 1995. Generating Dataflow Analyzers with PAG. Tech. rep. A 10/95, Universität des Saarlandes.
[4]
Callahan, D., Cooper, K. D., Kennedy, K., and Torczon, L. 1986. Interprocedural constant propagation. In Proceedings of the 1986 SIGPLAN Symposium on Compiler Contruction (SIGPLA). 152--161.
[5]
Emami, M., Ghiya, R., and Hendren, L. J. 1994. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In Proceedings of the ACM SIGPLAN 1994 Conference on Programming Language Design and Implementation (PLDI). 242--256.
[6]
Graham, S. L. and Wegman, M. 1975. A fast and usually linear algorithm for global flow analysis. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). 22--34.
[7]
Hecht, M. S. 1977. Flow Analysis of Computer Programs. Elsevier Science Inc.
[8]
Kam, J. B. and Ullman, J. D. 1977. Monotone data flow analysis frameworks. Acta Informatica. 7, 3, 305--318.
[9]
Kanade, A., Khedker, U. P., and Sanyal, A. 2005. Heterogeneous fixed points with application to points-to analysis. In APLAS. 298--314.
[10]
Khedker, U. P. 2002. Data flow analysis. In The Compiler Design Handbook. CRC Press, 1--59.
[11]
Khedker, U. P. and Dhamdhere, D. M. 1994. A generalized theory of bit vector data flow analysis. ACM Trans. Program. Lang. Syst. 16, 5, 1472--1511.
[12]
Kildall, G. A. 1973. A unified approach to global program optimization. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). 194--206.
[13]
Muchnick, S. S. 1997. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers Inc., San Francisco, CA.
[14]
Myers, E. M. 1981. A precise inter-procedural data flow algorithm. In Proceedings of the 8th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). ACM Press, 219--230.
[15]
Pande, H., Landi, W., and Ryder, B. 1992. Interprocedural reaching definitions in the presence of single level pointers. Tech. rep. lost-tr-193, Laboratory for Computer Science Research Rutgers University.
[16]
Reps, T., Horwitz, S., and Sagiv, M. 1995. Precise interprocedural dataflow analysis via graph reachability. In Proceedings of the ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL). 49--61.
[17]
Sharir, M. and Pnueli, A. 1981. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications, S. S. Muchnick and N. D. Jones, Eds. Prentice-Hall Inc.
[18]
Whaley, J. and Lam, M. S. 2004. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation (PLDI). ACM Press.

Cited By

View all
  • (2018)Precise and scalable points-to analysis via data-driven context tunnelingProceedings of the ACM on Programming Languages10.1145/32765102:OOPSLA(1-29)Online publication date: 24-Oct-2018
  • (2011)Contribution-based call stack abstraction for call string based pointer analysisInformation and Software Technology10.1016/j.infsof.2010.11.00453:6(654-665)Online publication date: 1-Jun-2011
  • (2010)An algorithmic mitigation of large spurious interprocedural cycles in static analysisSoftware—Practice & Experience10.5555/1840756.184075740:8(585-603)Online publication date: 1-Jul-2010
  • Show More Cited By

Index Terms

  1. An improved bound for call strings based interprocedural analysis of bit vector frameworks

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM Transactions on Programming Languages and Systems
      ACM Transactions on Programming Languages and Systems  Volume 29, Issue 6
      October 2007
      408 pages
      ISSN:0164-0925
      EISSN:1558-4593
      DOI:10.1145/1286821
      Issue’s Table of Contents
      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 01 October 2007
      Published in TOPLAS Volume 29, Issue 6

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. Bit Vector Data Flow Frameworks
      2. Interprocedural Data Flow Analysis

      Qualifiers

      • Article

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)31
      • Downloads (Last 6 weeks)6
      Reflects downloads up to 08 Feb 2025

      Other Metrics

      Citations

      Cited By

      View all
      • (2018)Precise and scalable points-to analysis via data-driven context tunnelingProceedings of the ACM on Programming Languages10.1145/32765102:OOPSLA(1-29)Online publication date: 24-Oct-2018
      • (2011)Contribution-based call stack abstraction for call string based pointer analysisInformation and Software Technology10.1016/j.infsof.2010.11.00453:6(654-665)Online publication date: 1-Jun-2011
      • (2010)An algorithmic mitigation of large spurious interprocedural cycles in static analysisSoftware—Practice & Experience10.5555/1840756.184075740:8(585-603)Online publication date: 1-Jul-2010
      • (2010)ReferencesData Flow Analysis10.1201/9780849332517.bmatt(371-378)Online publication date: 13-Jan-2010
      • (2010)An algorithmic mitigation of large spurious interprocedural cycles in static analysisSoftware: Practice and Experience10.1002/spe.96940:8(585-603)Online publication date: 12-May-2010
      • (2009)Contribution-Based Call Stack Abstraction and Its Application in Pointer Analysis of AspectJ ProgramsProceedings of the 2009 16th Asia-Pacific Software Engineering Conference10.1109/APSEC.2009.28(267-274)Online publication date: 1-Dec-2009
      • (2009)Large Spurious Cycle in Global Static Analyses and Its Algorithmic MitigationProceedings of the 7th Asian Symposium on Programming Languages and Systems10.1007/978-3-642-10672-9_4(14-29)Online publication date: 3-Dec-2009
      • (2008)Efficiency, precision, simplicity, and generality in interprocedural data flow analysisProceedings of the Joint European Conferences on Theory and Practice of Software 17th international conference on Compiler construction10.5555/1788374.1788394(213-228)Online publication date: 29-Mar-2008
      • (2008)Efficiency, Precision, Simplicity, and Generality in Interprocedural Data Flow Analysis: Resurrecting the Classical Call Strings MethodCompiler Construction10.1007/978-3-540-78791-4_15(213-228)Online publication date: 2008

      View Options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Login options

      Full Access

      Figures

      Tables

      Media

      Share

      Share

      Share this Publication link

      Share on social media