A Fast and Usually Linear Algorithm for Global Flow Analysis
Journal of the ACM (JACM)
Conversion of control dependence to data dependence
POPL '83 Proceedings of the 10th 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
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The program Dependence Graph and its Use in Optimization
Proceedings of the 6th Colloquium on International Symposium on Programming
On proving the correctness of optimizing transformations in a digital design automation system
DAC '81 Proceedings of the 18th Design Automation Conference
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 program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generating sequential code from parallel code
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Integrating noninterfering versions of programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
The program dependence graph and vectorization
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A foundation for sequentializing parallel code
SPAA '90 Proceedings of the second annual ACM symposium on Parallel algorithms and architectures
Loop distribution with arbitrary control flow
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
Automatic partitioning of a program dependence graph into parallel tasks
IBM Journal of Research and Development
A visualization system for parallelizing programs
Proceedings of the 1992 ACM/IEEE conference on Supercomputing
The transitive closure of control dependence: the iterated join
ACM Letters on Programming Languages and Systems (LOPLAS)
Data flow equations for explicitly parallel programs
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Value dependence graphs: representation without taxation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient compilation of ESTEREL for real-time embedded systems
CASES '00 Proceedings of the 2000 international conference on Compilers, architecture, and synthesis for embedded systems
Code motion of control structures in high-level languages
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Superword-Level Parallelism in the Presence of Control Flow
Proceedings of the international symposium on Code generation and optimization
Intermediate representations in imperative compilers: A survey
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
We consider the problem of generating sequential code for programs written in a language which contains a Multiple GOTO operator, predicates and statements. This problem arises when compiling a parallel intermediate form (such as the PDG [3,4]) to run on a sequential machine; in a source-to-source FORTRAN translator when vectorization of a loop has failed; and when compiling logic designs written in a parallel design language for simulation on a sequential machine. It is easy to generate sequential code for this sort of parallel program if one allows either duplication of code or the insertion of guard variables at merge points; in fact, it is in general impossible without this addition. However, for a large class of parallel programs (such as those originally arising from sequential programs, even after some optimizations have been applied) it is possible to generate sequential code without duplication or the addition of guard variables. In this paper we present an efficient algorithm which will generate sequential code from a parallel program without duplication or additional guard variables for a large class of parallel programs.