Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Efficient symbolic analysis of programs
Journal of Computer and System Sciences
Data flow analysis for `intractable' system software
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Interprocedural constant propagation
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Interprocedural dependence analysis and parallelization
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Code Optimization Across Procedures
Computer
Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbers and redundant computations
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Continuation-passing, closure-passing style
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural analysis vs. procedure integration
Information Processing Letters
Constant propagation with conditional branches
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Fast and Usually Linear Algorithm for Global Flow Analysis
Journal of the ACM (JACM)
Data Flow Analysis for Procedural Languages
Journal of the ACM (JACM)
Global optimization by suppression of partial redundancies
Communications of the ACM
An analysis of inline substitution for a structured programming language
Communications of the ACM
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Symbolic evaluation and the global value graph
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An interprocedural data flow analysis algorithm
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A program form based on data dependency in predicate regions
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A precise inter-procedural data flow algorithm
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An efficient way to find the side effects of procedure calls and the aliases of variables
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Predicting the effects of optimization on a procedure body
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
Type determination for very high level languages.
Type determination for very high level languages.
General and efficient methods for global code improvement
General and efficient methods for global code improvement
Interprocedural data flow analysis in a programming environment
Interprocedural data flow analysis in a programming environment
A portable machine-independent global optimizer--design and measurements
A portable machine-independent global optimizer--design and measurements
Bulldog: a compiler for vliw architectures (parallel computing, reduced-instruction-set, trace scheduling, scientific)
Programming languages and their compilers: Preliminary notes
Programming languages and their compilers: Preliminary notes
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Using static single assignment form in a code optimizer
ACM Letters on Programming Languages and Systems (LOPLAS)
Efficient accommodation of may-alias information in SSA form
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Dependence-based program analysis
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Interprocedural constant propagation: a study of jump function implementation
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Static single assignment for explicitly parallel programs
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Constructing call multigraphs using dependence graphs
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tutorial notes on partial evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Undecidability of static analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Pointer-induced aliasing: a clarification
ACM SIGPLAN Notices
Interprocedural optimization: eliminating unnecessary recompilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural constant propagation: an empirical study
ACM Letters on Programming Languages and Systems (LOPLAS)
Improvements to graph coloring register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Effective partial redundancy elimination
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Propagation of constants and assertions
ACM SIGPLAN Notices
Single-pass generation of static single-assignment form for structured languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Combining analyses, combining optimizations
ACM Transactions on Programming Languages and Systems (TOPLAS)
A simple graph-based intermediate representation
IR '95 Papers from the 1995 ACM SIGPLAN workshop on Intermediate representations
Efficiently computing Φ-nodes on-the-fly
ACM Transactions on Programming Languages and Systems (TOPLAS)
Flow-sensitive interprocedural constant propagation
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Efficient building and placing of gating functions
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Accurate static branch prediction by value range propagation
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Global code motion/global value numbering
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
A flexible architecture for building data flow analyzers
Proceedings of the 18th international conference on Software engineering
Symbolic analysis for parallelizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program analysis using binary relations
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
A new algorithm for partial redundancy elimination based on SSA form
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
A new algorithm for scalar register promotion based on SSA form
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Improving data-flow analysis with path profiles
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
A study of dead data members in C++ applications
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Predicated array data-flow analysis for run-time parallelization
ICS '98 Proceedings of the 12th international conference on Supercomputing
Initial Results for Glacial Variable Analysis
International Journal of Parallel Programming
Basic compiler algorithms for parallel programs
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Evaluation of predicated array data-flow analysis for automatic parallelization
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Enhanced code compression for embedded RISC processors
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Static single assignment form for machine code
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Optimizing for reduced code space using genetic algorithms
Proceedings of the ACM SIGPLAN 1999 workshop on Languages, compilers, and tools for embedded systems
BPF+: exploiting global data-flow optimization in a generalized packet filter architecture
Proceedings of the conference on Applications, technologies, architectures, and protocols for computer communication
Techniques for the translation of MATLAB programs into Fortran 90
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial redundancy elimination in SSA form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Power optimization using divide-and-conquer techniques for minimization of the number of operations
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Interprocedural pointer alias analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Constant propagation: a fresh, demand-driven look
SAC '94 Proceedings of the 1994 ACM symposium on Applied computing
SSA-based flow-sensitive type analysis: combining constant and type propagation
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 2
Formal Value-Range and Variable Testability Techniquesfor High-Level Design-For-Testability
Journal of Electronic Testing: Theory and Applications - Special issue on microprocessor test and verification
Which pointer analysis should I use?
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Combining Global Code and Data Compaction
OM '01 Proceedings of the 2001 ACM SIGPLAN workshop on Optimization of middleware and distributed systems
Composing dataflow analyses and transformations
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
A sparse algorithm for predicated global value numbering
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Propagating constants past software to hardware peripherals in fixed-application embedded systems
ACM SIGARCH Computer Architecture News - Special Issue: PACT 2001 workshops
Efficient static single assignment form for predication
Proceedings of the 34th annual ACM/IEEE international symposium on Microarchitecture
A Constant Propagation Algorithm for Explicitly Parallel Programs
International Journal of Parallel Programming
Behavioral-Level DFT via Formal Operator Testability Measures
Journal of Electronic Testing: Theory and Applications
Extending Typestate Checking Using Conditional Liveness Analysis
IEEE Transactions on Software Engineering
On the Efficient Engineering of Ambitious Program Analysis
IEEE Transactions on Software Engineering
On the Complexity of Constant Propagation
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
Thin Guards: A Simple and Effective Technique for Reducing the Penalty of Dynamic Class Loading
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Translating Out of Static Single Assignment Form
SAS '99 Proceedings of the 6th International Symposium on Static Analysis
Guaranteed Optimization: Proving Nullspace Properties of Compilers
SAS '02 Proceedings of the 9th International Symposium on Static Analysis
Simple Generation of Static Single-Assignment Form
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Constant Propagation on the Value Graph: Simple Constants and Beyond
CC '00 Proceedings of the 9th International Conference on Compiler Construction
A Case for Combining Compile-Time and Run-Time Parallelization
LCR '98 Selected Papers from the 4th International Workshop on Languages, Compilers, and Run-Time Systems for Scalable Computers
An efficient static analysis algorithm to detect redundant memory operations
Proceedings of the 2002 workshop on Memory system performance
Advanced copy propagation for arrays
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Data size optimizations for java programs
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
ITC '99 Proceedings of the 1999 IEEE International Test Conference
Obfuscation of design intent in object-oriented applications
Proceedings of the 3rd ACM workshop on Digital rights management
Propagating constants past software to hardware peripherals on fixed-application embedded systems
Compilers and operating systems for low power
Incremental execution of transformation specifications
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Global value numbering using random interpretation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural constant propagation
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Improving data-flow analysis with path profiles
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Finding effective compilation sequences
Proceedings of the 2004 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
An optimizing compiler for batches of temporal logic formulas
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Proceedings of the 2nd IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis
A nanopass infrastructure for compiler education
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
ERLANG '04 Proceedings of the 2004 ACM SIGPLAN workshop on Erlang
Algebraic Power Analysis by Abstract Interpretation
Higher-Order and Symbolic Computation
ACME: adaptive compilation made efficient
LCTES '05 Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Static determination of allocation rates to support real-time garbage collection
LCTES '05 Proceedings of the 2005 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Efficiently compiling a functional language on AMD64: the HiPE experience
PPDP '05 Proceedings of the 7th ACM SIGPLAN international conference on Principles and practice of declarative programming
Joining dataflow with predicates
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Link-time binary rewriting techniques for program compaction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Exploring the structure of the space of compilation sequences using randomized search algorithms
The Journal of Supercomputing
Pluggable abstract domains for analyzing embedded software
Proceedings of the 2006 ACM SIGPLAN/SIGBED conference on Language, compilers, and tool support for embedded systems
Documenting software systems using types
Science of Computer Programming - Software analysis, evolution and re-engineering
Extracting queries by static analysis of transparent persistence
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A polynomial-time algorithm for global value numbering
Science of Computer Programming
Program Transformation with Scoped Dynamic Rewrite Rules
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Combining compile-time and run-time parallelization[1]
Scientific Programming
Interprocedural definition-use chains of dynamic pointer-linked data structures
Scientific Programming
Offline compression for on-chip ram
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Interference graphs for procedures in static single information form are interval graphs
SCOPES '07 Proceedingsof the 10th international workshop on Software & compilers for embedded systems
Improvements to the Psi-SSA representation
SCOPES '07 Proceedingsof the 10th international workshop on Software & compilers for embedded systems
Improved Invariant Generation for Tvoc
Electronic Notes in Theoretical Computer Science (ENTCS)
Generating Java Compiler Optimizers Using Bidirectional CTL
Electronic Notes in Theoretical Computer Science (ENTCS)
Comprehensive path-sensitive data-flow analysis
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
BSGP: bulk-synchronous GPU programming
ACM SIGGRAPH 2008 papers
Orchestrating data transfer for the cell/B.E. processor
Proceedings of the 22nd annual international conference on Supercomputing
Customization change impact analysis for erp professionals via program slicing
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
A Framework-Based Environment for Object-Oriented Scientific Codes
Scientific Programming - The First Annual Object-Oriented Numerics Conference (OON-SKI '93)
Comparison and evaluation of back-translation algorithms for static single assignment forms
Computer Languages, Systems and Structures
Program transformations using temporal logic side conditions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient alias set analysis using SSA form
Proceedings of the 2009 international symposium on Memory management
Increasing the Scope and Resolution of Interprocedural Static Single Assignment
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Optimal interprocedural program optimization: a new framework and its application
Optimal interprocedural program optimization: a new framework and its application
Program transformations for information personalization
Computer Languages, Systems and Structures
Interacting code motion transformations: their impact and their complexity
Interacting code motion transformations: their impact and their complexity
Register allocation by optimal graph coloring
CC'03 Proceedings of the 12th international conference on Compiler construction
A new one-pass transformation into monadic normal form
CC'03 Proceedings of the 12th international conference on Compiler construction
Advanced symbolic analysis for compilers: new techniques and algorithms for symbolic program analysis and optimization
General constant expressions for system programming languages
Proceedings of the 2010 ACM Symposium on Applied Computing
Migrating legacy data structures based on variable overlay to Java
Journal of Software Maintenance and Evolution: Research and Practice - Working Conference on Reverse Engineering (WCRE 2008)
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
Agent-oriented programming: from prolog to guarded definite clauses
Agent-oriented programming: from prolog to guarded definite clauses
Techniques and tools for implementing IEEE 754 floating-point arithmetic on VLIW integer processors
Proceedings of the 4th International Workshop on Parallel and Symbolic Computation
Independence from obfuscation: A semantic framework for diversity
Journal of Computer Security
Factor: a dynamic stack-based programming language
Proceedings of the 6th symposium on Dynamic languages
Subregion analysis and bounds check elimination for high level arrays
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
A security policy oracle: detecting security holes using multiple API implementations
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Path- and index-sensitive string analysis based on monadic second-order logic
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Exploiting static application knowledge in a Java compiler for embedded systems: a case study
Proceedings of the 9th International Workshop on Java Technologies for Real-Time and Embedded Systems
Bootstrapping a self-hosted research virtual machine for JavaScript: an experience report
Proceedings of the 7th symposium on Dynamic languages
JET: exception checking in the Java native interface
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Flow-sensitive type recovery in linear-log time
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
CC'05 Proceedings of the 14th international conference on Compiler Construction
Intraprocedural dataflow analysis for software product lines
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
The hot path SSA form: extending the static single assignment form for speculative optimizations
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
ACM Transactions on Embedded Computing Systems (TECS)
Efficient flow-sensitive interprocedural data-flow analysis in the presence of pointers
CC'06 Proceedings of the 15th international conference on Compiler Construction
Access-Based localization with bypassing
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Design and implementation of sparse global analyses for C-like languages
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Program Transformation with Scoped Dynamic Rewrite Rules
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
An optimizing compiler for automatic shader bounding
EGSR'10 Proceedings of the 21st Eurographics conference on Rendering
Satisfiability solvers are static analysers
SAS'12 Proceedings of the 19th international conference on Static Analysis
Spill code placement for SIMD machines
SBLP'12 Proceedings of the 16th Brazilian conference on Programming Languages
Parameter based constant propagation
SBLP'12 Proceedings of the 16th Brazilian conference on Programming Languages
A JVM for soft-error-prone embedded systems
Proceedings of the 14th ACM SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systems
Intermediate representations in imperative compilers: A survey
ACM Computing Surveys (CSUR)
SPLLIFT: statically analyzing software product lines in minutes instead of years
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Relaxed separation logic: a program logic for C11 concurrency
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Path- and index-sensitive string analysis based on monadic second-order logic
ACM Transactions on Software Engineering and Methodology (TOSEM) - Testing, debugging, and error handling, formal methods, lifecycle concerns, evolution and maintenance
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
Intraprocedural dataflow analysis for software product lines
Transactions on Aspect-Oriented Software Development X
Hi-index | 0.00 |
Constant propagation is a well-known global flow analysis problem. The goal of constant propagation is to discover values that are constant on all possible executions of a program and to propagate these constant values as far foward through the program as possible. Expressions whose operands are all constants can be evaluated at compile time and the results propagated further. Using the algorithms presented in this paper can produce smaller and faster compiled programs. The same algorithms can be used for other kinds of analyses (e.g., type of determination). We present four algorithms in this paper, all conservitive in the sense that all constants may not be found, but each constant found is constant over all possible executions of the program. These algorithms are among the simplest, fastest, and most powerful global constant propagation algorithms known. We also present a new algorithm that performs a form of interprocedural data flow analysis in which aliasing information is gathered in conjunction with constant progagation. Several variants of this algorithm are considered.