Refining data flow information using infeasible paths

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.

[1]  H. S. Wang,et al.  A generalized optimal path-selection model for structural program testing , 1989, J. Syst. Softw..

[2]  Christopher W. Fraser,et al.  A Retargetable C Compiler: Design and Implementation , 1995 .

[3]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[4]  Rajiv Gupta,et al.  Employing static information in the generation of test cases , 1993, Softw. Test. Verification Reliab..

[5]  Barry K. Rosen,et al.  Qualified Data Flow Problems , 1981, IEEE Trans. Software Eng..

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  David B. Whalley,et al.  Avoiding conditional branches by code replication , 1995, PLDI '95.

[8]  David S. Wise Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation , 1991, PLDI 1991.

[9]  Frances E. Allen,et al.  Interprocedural Data Flow Analysis , 1974, IFIP Congress.

[10]  Rajiv Gupta,et al.  Hybrid slicing: an approach for refining static slices using dynamic information , 1995, SIGSOFT '95.

[11]  Rajiv Gupta,et al.  Correlation analysis techniques for refining execution time estimates of real-time applications , 1994, Proceedings of 11th IEEE Workshop on Real-Time Operating Systems and Software.

[12]  Rajiv Gupta,et al.  An approach to regression testing using slicing , 1992, Proceedings Conference on Software Maintenance 1992.

[13]  Leon J. Osterweil,et al.  On Two Problems in the Generation of Program Test Paths , 1976, IEEE Transactions on Software Engineering.

[14]  Barry K. Rosen,et al.  Qualified Data Flow Problems , 1980, IEEE Transactions on Software Engineering.

[15]  Rajiv Gupta,et al.  Interprocedural conditional branch elimination , 1997, PLDI '97.

[16]  Rajiv Gupta,et al.  Demand-driven computation of interprocedural data flow , 1995, POPL '95.

[17]  Rajiv Gupta,et al.  A demand-driven analyzer for data flow testing at the integration level , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[18]  Elaine J. Weyuker,et al.  An Applicable Family of Data Flow Testing Criteria , 1988, IEEE Trans. Software Eng..

[19]  Thomas W. Reps,et al.  Demand interprocedural dataflow analysis , 1995, SIGSOFT FSE.