Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Information Processing Letters
Interprocedural slicing using dependence graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Forward computation of dynamic program slices
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
SUIF: an infrastructure for research on parallelizing and optimizing compilers
ACM SIGPLAN Notices
Experimental results from dynamic slicing of C programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Demand interprocedural dataflow analysis
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
The design of whole-program analysis tools
Proceedings of the 18th international conference on Software engineering
Points-to analysis in almost linear time
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fast and accurate flow-insensitive points-to analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Putting pointer analysis to work
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Partial online cycle elimination in inclusion constraint graphs
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Effective whole-program analysis in the presence of pointers
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
Reuse-driven interprocedural slicing
Proceedings of the 20th international conference on Software engineering
Efficient points-to analysis for whole-program analysis
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Light-weight context recovery for efficient and accurate program analyses
Proceedings of the 22nd international conference on Software engineering
Which pointer analysis should I use?
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Unification-based pointer analysis with directional assignments
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Off-line variable substitution for scaling points-to analysis
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Calpa: a tool for automating selective dynamic compilation
Proceedings of the 33rd annual ACM/IEEE international symposium on Microarchitecture
A slicing-based approach for locating type errors
ACM Transactions on Software Engineering and Methodology (TOSEM)
On the importance of points-to analysis and other memory disambiguation methods for C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Ultra-fast aliasing analysis using CLA: a million lines of C code in a second
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Evaluating explicitly context-sensitive program slicing
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
A schema for interprocedural modification side-effect analysis with pointer aliasing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Using types to analyze and optimize object-oriented programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Improving program slicing with dynamic points-to data
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
Interprocedural Def-Use Associations for C Systems with Single Level Pointers
IEEE Transactions on Software Engineering
The Effects of the Precision of Pointer Analysis
SAS '97 Proceedings of the 4th International Symposium on Static Analysis
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Gprof: A call graph execution profiler
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Implementation Techniques for Efficient Data-Flow Analysis of Large Programs
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Reuse-Driven Interprocedural Slicing in the Presence of Pointers and Recursions
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Evaluating Context-Sensitive Slicing and Chopping
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
A Comparative Study of Two Whole Program Slicers for C
A Comparative Study of Two Whole Program Slicers for C
The design and implementation of practical and task-oriented whole-program analysis tools
The design and implementation of practical and task-oriented whole-program analysis tools
Automating selective dynamic compilation
Automating selective dynamic compilation
A Large-Scale Empirical Study of Forward and Backward Static Slice Size and Context Sensitivity
ICSM '03 Proceedings of the International Conference on Software Maintenance
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Efficient Forward Computation of Dynamic Slices Using Reduced Ordered Binary Decision Diagrams
Proceedings of the 26th International Conference on Software Engineering
Accurate Call Graph Extraction of Programs with Function Pointers Using Type Signatures
APSEC '04 Proceedings of the 11th Asia-Pacific Software Engineering Conference
Program slicing under UML scenario models
ACM SIGPLAN Notices
Combining preprocessor slicing with C/C++ language slicing
Science of Computer Programming
Complete Def-Use Analysis in Recursive Programs with Dynamic Data Structures
Euro-Par 2008 Workshops - Parallel Processing
Operating system kernel data disambiguation to support security analysis
NSS'12 Proceedings of the 6th international conference on Network and System Security
Hi-index | 0.00 |
Program slicing is a potentially useful analysis for aiding program understanding. However, in reality even slices of small programs are often too large to be useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we use dynamic points-to data, which represents optimistic pointer information, to obtain a bound on the best case slice size improvement that can be achieved with improved pointer precision. Our experiments show that slice size can be reduced significantly for programs that make frequent use of calls through function pointers because for them the dynamic pointer data results in a considerably smaller call graph, which leads to fewer data dependences. Programs without or with only few calls through function pointers, however, show considerably less improvement. We discovered that C programs appear to have a significant fraction of direct and nonspurious pointer data dependences so that reducing spurious dependences via pointers is only of limited benefit. Consequently, to make slicing useful in general for such programs, improvements beyond better pointer analyses will be necessary. On the other hand, since we show that collecting dynamic function pointer information can be performed with little overhead (average slowdown of 10 percent for our benchmarks), dynamic pointer information may be a practical approach to making slicing of programs with frequent function pointer use more successful in practice.