Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Common LISP: the language
Projections for strictness analysis
Proc. of a conference on Functional programming languages and computer architecture
The SCHEME programming language
The SCHEME programming language
Control flow analysis in scheme
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
The synthesizer generator: a system for constructing language-based editors
The synthesizer generator: a system for constructing language-based editors
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Separating binding times in language specifications
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Compile-time garbage collection by sharing analysis
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Static type inference in a dynamically typed language
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Strictness and binding-time analyses: two for the price of one
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program bifurcation for a polymorphically typed functional language
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Compile-time analysis of functional programs
Research topics in functional programming
Efficient type inference for higher-order binding-time analysis
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Semantics of programming languages: structures and techniques
Semantics of programming languages: structures and techniques
Safe fusion of functional expressions
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Analysis of recursive types in Lisp-like languages
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Set based program analysis
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Systematic derivation of incremental programs
Science of Computer Programming
Formal language, grammar and set-constraint-based program analysis by abstract interpretation
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Discovering auxiliary information for incremental computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Partial dead code elimination using slicing transformations
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Interconvertbility of set constraints and context-free language reachability
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Iteration space slicing and its application to communication optimization
ICS '97 Proceedings of the 11th international conference on Supercomputing
On the complexity of escape analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Calendrical calculations
Escape analysis: correctness proof, implementation and experimental results
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Solving shape-analysis problems in languages with destructive updating
ACM Transactions on Programming Languages and Systems (TOPLAS)
A study of dead data members in C++ applications
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Static caching for incremental computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Constraint systems for useless variable elimination
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Constraints to stop deforestation
Science of Computer Programming - Special issue on the 6th European symposium on programming
Componential set-based analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Declaration-free type checking
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Finite Differencing of Computable Expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interconvertibility of a class of set constraints and context-free-language reachability
Theoretical Computer Science - Partial evaluation and semantics-based program manipulation
An algorithm for reduction of operator strength
Communications of the ACM
Flow analysis and optimization of LISP-like structures
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Definition of Standard ML
Program Flow Analysis: Theory and Application
Program Flow Analysis: Theory and Application
Propagating Differences: An Efficient New Fixpoint Algorithm for Distributive Constraint Systems
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
Program Specialization via Program Slicing
Selected Papers from the Internaltional Seminar on Partial Evaluation
Grammar-Based Data-Flow Analysis to Stop Deforestation
CAAP '94 Proceedings of the 19th International Colloquium on Trees in Algebra and Programming
Dependence Analysis for Recursive Data
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Set Constraints for Destructive Array Update Optimization
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Dynamic slicing based on redex trails
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Removing redundant arguments automatically
Theory and Practice of Logic Programming
Static Slicing of Rewrite Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Dynamic slicing of lazy functional programs based on redex trails
Higher-Order and Symbolic Computation
Using conditional trace slicing for improving Maude programs
Science of Computer Programming
Hi-index | 0.00 |
This paper describes a powerful method for dead-code analysis and elimination in the presence of recursive data constructions. We describe partially dead recursive data using liveness patterns based on general regular tree grammars extended with the notion of live and dead, and we formulate the analysis as computing liveness patterns at all program points based on constraints constructed from the program and programming language semantics. The analysis yields the most precise program-based grammars that satisfy the constraints. The analysis algorithm takes cubic time in terms of the size of the program in the worst case but is very efficient in practice, as shown by our prototype implementation. The analysis results are used to identify and eliminate dead code. The framework for representing and analyzing properties of recursive data structures using general regular tree grammars applies to other analyses as well.