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.
Preview
Unable to display preview. Download preview PDF.
References
A.V. Aho, R. Sethi, J.D. Ullman, Compilers, Principles, Techniques, and Tools, Addison-Wesley, 1986.
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.
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.
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.
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.
C. Fraser and D. Hanson, A Retargetable C Compiler: Design and Implementation, Benjamin/Cummings, 1995.
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.
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.
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.
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.
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.
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.
L.H. Holley and B.K. Rosen, “Qualified Data Flow Problems,” IEEE Transactions on Software Engineering, Vol. SE-7, NO.1, January 1981
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.
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.
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.
M. Weiser, “Program Slicing,” IEEE Transactions on Software Engineering, Vol. SE-10, No. 4, pages 352–357, July 1984.
Author information
Authors and Affiliations
Editor information
Rights 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