Skip to main content

Refining data flow information using infeasible paths

  • Regular Sessions
  • Conference paper
  • First Online:
Software Engineering — ESEC/FSE'97 (ESEC 1997, SIGSOFT FSE 1997)

Abstract

Experimental evidence indicates that large programs exhibit significant amount of branch correlation amenable to compile-time detection. Branch correlation gives rise to infeasible paths, which in turn make data flow information overly conservative. For example, def-use pairs that always span infeasible paths cannot be tested by any program input, preventing 100% def-use testing coverage. We present an algorithm for identifying infeasible program paths and a data flow analysis technique that improves the precision of traditional def-use pair analysis by incorporating the information about infeasible paths into the analysis. Infeasible paths are computed using branch correlation analysis, which can be performed either intra- or inter-procedurally. The efficiency of our technique is achieved through demand-driven formulation of both the infeasible paths detection and the def-use pair analysis. Our experiments indicate that even when a simple form of intraprocedural branch correlation is considered, more than 2% of def-use pairs in the SPEC95 benchmark programs can be found infeasible.

Supported in part by Hewlett Packard, the National Science Foundation PYI Award CCR-9157371, and Grant CCR-9402226 to the Univ. of Pittsburgh.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A.V. Aho, R. Sethi, J.D. Ullman, Compilers, Principles, Techniques, and Tools, Addison-Wesley, 1986.

    Google Scholar 

  2. R. Bodik, R. Gupta, and M.L. Soffa, “Interprocedural Conditional Branch Elimination,” Proceedings of the ACM SIGPLAN '97 Conference on Programming Language Design and Implementation, June 1997.

    Google Scholar 

  3. E. Duesterwald, R. Gupta, and M.L. Soffa, ”Interprocedural Data Flow Analysis on Demand,” The 22nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 37–48, San Francisco, California, January 1995.

    Google Scholar 

  4. E. Duesterwald, R. Gupta, and M.L. Soffa, “A Demand-Driven Analyzer for Data Flow Testing at the Integration Level,” International Conference on Software Engineering, Berlin, Germany, March 1996.

    Google Scholar 

  5. P.G. Frankl, E.J. Woyeker, “An Applicable Family of Data Flow Testing Criteria,” IEEE Transactions on Software Engineering, pages 1483–1498, Vol. 14, No. 10, October 1988.

    Google Scholar 

  6. C. Fraser and D. Hanson, A Retargetable C Compiler: Design and Implementation, Benjamin/Cummings, 1995.

    Google Scholar 

  7. H.N. Gabow, S.N. Maheshwaxi, L.J. Osterweil, “On Two Problems in the Generation of Program Test Paths,” IEEE Transactions on Software Engineering, Vol. SE-2, No. 3, pages 227–231, September 1976.

    Google Scholar 

  8. R. Gupta and P. Gopinath, “Correlation Analysis Techniques for Refining Execution Time Estimates of Real-Time Applications,” 11th IEEE Workshop on Real-Time Operating Systems and Software, pages 54–58, Seattle, Washington, May 1994.

    Google Scholar 

  9. R. Gupta and M.L. Soffa, “Employing Static Information in the Generation of Test Cases,” Journal of Software Testing, Verification and Reliability, Vol. 3, No. 1, pages 29–48, December 1993.

    Google Scholar 

  10. R. Gupta and M.L. Soffa, “Hybrid Slicing: An Approach for Refining Static Slices Using Dynamic Information,” ACM SIGSOFT Third Symposium on the Foundations of Software Engineering, pages 29–40, Washington, DC, October 1995.

    Google Scholar 

  11. R. Gupta, M.J. Harrold, and M.L. Soffa, “An Approach to Regression Testing using Slicing,” Conference on Software Maintenance, pages 299–308, Orlando, Florida, November 1992.

    Google Scholar 

  12. S. Horwitz, T. Reps, and M. Sagiv, “Demand Interprocedural Data Flow Analysis,” ACM SIGSOFT Third Symposium on the Foundations of Software Engineering, Washington, DC, October 1995.

    Google Scholar 

  13. L.H. Holley and B.K. Rosen, “Qualified Data Flow Problems,” IEEE Transactions on Software Engineering, Vol. SE-7, NO.1, January 1981

    Google Scholar 

  14. J.R. Lyle and M. Weiser, “Automatic Program Bug Location by Program Slicing,” Proc. Second IEEE Symposium on Computers and Applications, pages 877–883, June 1987.

    Google Scholar 

  15. F. Mueller and D.B. Whalley, “Avoiding conditional branches by code replication,“ Proceedings of the ACM SIGPLAN '95 Conference on Programming Language Design and Implementation, SIGPLAN Notices, 30(6):56–66, June 1995.

    Google Scholar 

  16. H.S. Wang and S.R. Hsu, “A Generalized Optimal Path-Selection Model for Structural Program Testing,” The Journal of Systems and Software, Vol. 10, pages 55–63, 1989.

    Google Scholar 

  17. M. Weiser, “Program Slicing,” IEEE Transactions on Software Engineering, Vol. SE-10, No. 4, pages 352–357, July 1984.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Mehdi Jazayeri Helmut Schauer

Rights and permissions

Reprints and permissions

Copyright information

© 1997 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Bodík, R., Gupta, R., Soffa, M.L. (1997). Refining data flow information using infeasible paths. In: Jazayeri, M., Schauer, H. (eds) Software Engineering — ESEC/FSE'97. ESEC SIGSOFT FSE 1997 1997. Lecture Notes in Computer Science, vol 1301. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-63531-9_25

Download citation

  • DOI: https://doi.org/10.1007/3-540-63531-9_25

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-63531-4

  • Online ISBN: 978-3-540-69592-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics