Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Advanced compiler optimizations for supercomputers
Communications of the ACM - Special issue on parallelism
Automatic translation of FORTRAN programs to vector form
ACM Transactions on Programming Languages and Systems (TOPLAS)
Loop skewing: the wavefront method revisited
International Journal of Parallel Programming
Crafting a compiler
Data dependence and its application to parallel processing
International Journal of Parallel Programming
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
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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)
Efficient and exact data dependence analysis
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
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)
Advances in languages and compilers for parallel processing
Advances in languages and compilers for parallel processing
The Organization of Computations for Uniform Recurrence Equations
Journal of the ACM (JACM)
An algorithm for reduction of operator strength
Communications of the ACM
An Empirical Study of Fortran Programs for Parallelizing Compilers
IEEE Transactions on Parallel and Distributed Systems
Experience in the Automatic Parallelization of Four Perfect-Benchmark Programs
Proceedings of the Fourth International Workshop on Languages and Compilers for Parallel Computing
Static single assignment for explicitly parallel programs
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lazy array data-flow dependence analysis
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Single-pass generation of static single-assignment form for structured languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
A linear time algorithm for placing &phgr;-nodes
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Beyond induction variables: detecting and classifying sequences using a demand-driven SSA form
ACM Transactions on Programming Languages and Systems (TOPLAS)
A correspondence between continuation passing style and static single assignment form
IR '95 Papers from the 1995 ACM SIGPLAN workshop on Intermediate representations
Efficient building and placing of gating functions
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Elimination of redundant array subscript range checks
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Enhancing array dataflow dependence analysis with on-demand global value propagation
ICS '95 Proceedings of the 9th international conference on Supercomputing
Gated SSA-based demand-driven symbolic analysis for parallelizing compilers
ICS '95 Proceedings of the 9th international conference on Supercomputing
Symbolic analysis for parallelizing compilers
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the Automatic Parallelization of the Perfect Benchmarks®
IEEE Transactions on Parallel and Distributed Systems
Constant propagation: a fresh, demand-driven look
SAC '94 Proceedings of the 1994 ACM symposium on Applied computing
Compiler analysis of irregular memory accesses
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Compiler optimizations for scalable parallel systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient static single assignment form for predication
Proceedings of the 34th annual ACM/IEEE international symposium on Microarchitecture
Array form representation of idiom recognition system for numerical programs
Proceedings of the 2001 conference on APL: an arrays odyssey
IEEE Transactions on Software Engineering
Alias Analysis for Fortran90 Array Slices
IPPS '97 Proceedings of the 11th International Symposium on Parallel Processing
Analysis of Irregular Single-Indexed Array Accesses and Its Applications in Compiler Optimizations
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Efficient Symbolic Analysis for Optimizing Compilers
CC '01 Proceedings of the 10th International Conference on Compiler Construction
Optimizing memory accesses for spatial computation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Extended SSA numbering: introducing SSA properties to languages with multi-level pointers
CASCON '96 Proceedings of the 1996 conference of the Centre for Advanced Studies on Collaborative research
A GSA-based compiler infrastructure to extract parallelism from complex loops
ICS '03 Proceedings of the 17th annual international conference on Supercomputing
A unified framework for nonlinear dependence testing and symbolic analysis
Proceedings of the 18th annual international conference on Supercomputing
STLlint: lifting static checking from languages to libraries
Software—Practice & Experience
Memory access optimization of dynamic binary translation for reconfigurable architectures
ICCAD '05 Proceedings of the 2005 IEEE/ACM International conference on Computer-aided design
Towards an automatic complexity analysis for generic programs
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Proceedings of the 44th annual Southeast regional conference
Interprocedural definition-use chains of dynamic pointer-linked data structures
Scientific Programming
Improvements to the Psi-SSA representation
SCOPES '07 Proceedingsof the 10th international workshop on Software & compilers for embedded systems
Flow-Sensitive Loop-Variant Variable Classification in Linear Time
Languages and Compilers for Parallel Computing
ESoftCheck: Removal of Non-vital Checks for Fault Tolerance
Proceedings of the 7th annual IEEE/ACM International Symposium on Code Generation and Optimization
Increasing the Scope and Resolution of Interprocedural Static Single Assignment
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
The Fortran parallel transformer and its programming environment
Information Sciences: an International Journal
Interprocedural induction variable analysis based on interprocedural SSA form IR
Proceedings of the 9th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Induction variable analysis with delayed abstractions
HiPEAC'05 Proceedings of the First international conference on High Performance Embedded Architectures and Compilers
Automatic parallelization using the value evolution graph
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
Synchronization-Free automatic parallelization: beyond affine iteration-space slicing
LCPC'09 Proceedings of the 22nd international conference on Languages and Compilers for Parallel Computing
Intermediate representations in imperative compilers: A survey
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
Induction variable detection is usually closely tied to the strength reduction optimization. This paper studies induction variable analysis from a different perspective, that of finding induction variables for data dependence analysis. While classical induction variable analysis techniques have been used successfully up to now, we have found a simple algorithm based on the Static Single Assignment form of a program that finds all linear induction variables in a loop. Moreover, this algorithm is easily extended to find induction variables in multiple nested loops, to find nonlinear induction variables, and to classify other integer scalar assignments in loops, such as monotonic, periodic and wrap-around variables. Some of these other variables are now classified using ad hoc pattern recognition, while others are not analyzed by current compilers. Giving a unified approach improves the speed of compilers and allows a more general classification scheme. We also show how to use these variables in data dependence testing.