Analyzing aliases of reference formal parameters
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Constant propagation with conditional branches
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An analysis of inline substitution for a structured programming language
Communications of the ACM
Efficient computation of flow insensitive interprocedural summary information
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual 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
SLIPE '85 Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments
Predicting the effects of optimization on a procedure body
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
Interprocedural data flow analysis in a programming environment
Interprocedural data flow analysis in a programming environment
Compilation dependences in an ambitious optimizing compiler (interprocedural, recompilation)
Compilation dependences in an ambitious optimizing compiler (interprocedural, recompilation)
Principles of Compiler Design (Addison-Wesley series in computer science and information processing)
Principles of Compiler Design (Addison-Wesley series in computer science and information processing)
The impact of interprocedural analysis and optimization in the Rn programming environment
ACM Transactions on Programming Languages and Systems (TOPLAS)
Advanced compiler optimizations for supercomputers
Communications of the ACM - Special issue on parallelism
Interprocedural optimization: eliminating unnecessary recompilation
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Automatic decomposition of scientific programs for parallel execution
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The program summary graph and flow-sensitive interprocedual data flow analysis
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Interprocedural side-effect analysis in linear time
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Automatic discovery of parallelism: a tool and an experiment (extended abstract)
PPEALS '88 Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems
Efficient interprocedural analysis for program parallelization and restructuring
PPEALS '88 Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems
Fast interprocedual alias analysis
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The parascope editor: an interactive parallel programming tool
Proceedings of the 1989 ACM/IEEE conference on Supercomputing
A fresh look at optimizing array bound checking
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Constant propagation with conditional branches
ACM Transactions on Programming Languages and Systems (TOPLAS)
Semantical interprocedural parallelization: an overview of the PIPS project
ICS '91 Proceedings of the 5th international conference on Supercomputing
Analysis and transformation in the ParaScope editor
ICS '91 Proceedings of the 5th international conference on Supercomputing
Experience with interprocedural analysis of array side effects
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
Inlining semantics for subroutines which are recursive
ACM SIGPLAN Notices
A dynamic scheduling method for irregular parallel programs
PLDI '92 Proceedings of the ACM SIGPLAN 1992 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
Constructing call multigraphs using dependence graphs
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural optimization: eliminating unnecessary recompilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimizing array bound checks using flow analysis
ACM Letters on Programming Languages and Systems (LOPLAS)
Interprocedural constant propagation: an empirical study
ACM Letters on Programming Languages and Systems (LOPLAS)
Propagation of constants and assertions
ACM SIGPLAN Notices
Compiler transformations for high-performance computing
ACM Computing Surveys (CSUR)
Precise interprocedural dataflow analysis via graph reachability
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Flow-sensitive interprocedural constant propagation
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
Demand interprocedural dataflow analysis
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Path-sensitive value-flow analysis
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Interprocedural Partial Redundancy Elimination With Application to Distributed Memory Compilation
IEEE Transactions on Parallel and Distributed Systems
A unified semantic approach for the vectorization and parallelization of generalized reductions
ICS '89 Proceedings of the 3rd international conference on Supercomputing
SSA-based flow-sensitive type analysis: combining constant and type propagation
SAC '00 Proceedings of the 2000 ACM symposium on Applied computing - Volume 2
Hardware support for dynamic activation of compiler-directed computation reuse
ACM SIGPLAN Notices
Hardware support for dynamic activation of compiler-directed computation reuse
ASPLOS IX Proceedings of the ninth international conference on Architectural support for programming languages and operating systems
An Empirical Study of Fortran Programs for Parallelizing Compilers
IEEE Transactions on Parallel and Distributed Systems
Interactive Parallel Programming using the ParaScope Editor
IEEE Transactions on Parallel and Distributed Systems
An Implementation of Interprocedural Bounded Regular Section Analysis
IEEE Transactions on Parallel and Distributed Systems
Array recovery and high-level transformations for DSP applications
ACM Transactions on Embedded Computing Systems (TECS)
Flow-sensitive Interprocedural Analysis Method for Parallelization
PACT '93 Proceedings of the IFIP WG10.3. Working Conference on Architectures and Compilation Techniques for Fine and Medium Grain Parallelism
Constant Propagation on the Value Graph: Simple Constants and Beyond
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Static analysis to support the evolution of exception structure in object-oriented systems
ACM Transactions on Software Engineering and Methodology (TOSEM)
Interprocedural side-effect analysis in linear time
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Interprocedural slicing using dependence graphs
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Inline Analysis: Beyond Selection Heuristics
Proceedings of the International Symposium on Code Generation and Optimization
A framework for unrestricted whole-program optimization
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Combined static and dynamic analysis for inferring program dependencies using a pattern language
CASCON '06 Proceedings of the 2006 conference of the Center for Advanced Studies on Collaborative research
An improved bound for call strings based interprocedural analysis of bit vector frameworks
ACM Transactions on Programming Languages and Systems (TOPLAS)
A case study on compiler optimizations for the Intel® Core™ 2 duo processor
International Journal of Parallel Programming
SOFSEM '10 Proceedings of the 36th Conference on Current Trends in Theory and Practice of Computer Science
Optimal interprocedural program optimization: a new framework and its application
Optimal interprocedural program optimization: a new framework and its application
New developments in WCET analysis
Program analysis and compilation, theory and practice
Fluxo: a system for internet service programming by non-expert developers
Proceedings of the 1st ACM symposium on Cloud computing
Soundness of data flow analyses for weak memory models
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Hi-index | 0.01 |
In a compiling system that attempts to improve code for a whole program by optimizing across procedures, the compiler can generate better code for a specific procedure if it knows which variables will have constant values, and what those values will be, when the procedure is invoked. This paper presents a general algorithm for determining for each procedure in a given program the set of inputs that will have known constant values at run time. The precision of the answers provided by this method are dependent on the precision of the local analysis of individual procedures in the program. Since the algorithm is intended for use in a sophisticated software development environment in which local analysis would be provided by the source editor, the quality of the answers will depend on the amount of work the editor performs. Several reasonable strategies for local analysis with different levels of complexity and precision are suggested and the results of a prototype implementation in a vectorizing Fortran compiler are presented.