The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Eliminating go to's while preserving program structure
Journal of the ACM (JACM)
Semantics with applications: a formal introduction
Semantics with applications: a formal introduction
A Control-Flow Normalization Algorithm and its Complexity
IEEE Transactions on Software Engineering
Formal Verification for Fault-Tolerant Architectures: Prolegomena to the Design of PVS
IEEE Transactions on Software Engineering
Steps towards mechanizing program transformations using PVS
Science of Computer Programming - Special issue on mathematics of program construction
GOTO removal based on regular expressions
Journal of Software Maintenance: Research and Practice
Nesting of reducible and irreducible loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
Making graphs reducible with controlled node splitting
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Fortran parallel transformer and its programming environment
Information Sciences: an International Journal - special issue on parallel and distributed processing
Characterizations of Reducible Flow Graphs
Journal of the ACM (JACM)
On the capabilities of while, repeat, and exit statements
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Flow diagrams, turing machines and languages with only two formation rules
Communications of the ACM
Conversion of control dependence to data dependence
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Handling irreducible loops: optimized node splitting versus DJ-graphs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Design of Well-Structured and Correct Programs
Design of Well-Structured and Correct Programs
Path Analysis and Renaming for Predicated Instruction Scheduling
International Journal of Parallel Programming
Elements of Mathematical Analysis in PVS
TPHOLs '96 Proceedings of the 9th International Conference on Theorem Proving in Higher Order Logics
Extracting the Parallelism in Program with Unstructured Control Statements
Proceedings of the 1994 International Conference on Parallel and Distributed Systems
CC '96 Proceedings of the 6th International Conference on Compiler Construction
PVS: A Prototype Verification System
CADE-11 Proceedings of the 11th International Conference on Automated Deduction: Automated Deduction
Dynamic Hammock Predication for Non-Predicated Instruction Set Architectures
PACT '98 Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques
Post-pass compaction techniques
Communications of the ACM - Program compaction
Generating cache hints for improved program efficiency
Journal of Systems Architecture: the EUROMICRO Journal
Data & Knowledge Engineering
On the Formal Semantics of Change Patterns in Process-Aware Information Systems
ER '08 Proceedings of the 27th International Conference on Conceptual Modeling
Automatic Workflow Graph Refactoring and Completion
ICSOC '08 Proceedings of the 6th International Conference on Service-Oriented Computing
Model-based test cases synthesis using UML interaction diagrams
ACM SIGSOFT Software Engineering Notes
Identifying semantic differences in AspectJ programs
Proceedings of the eighteenth international symposium on Software testing and analysis
Synthesis of test scenarios using UML activity diagrams
Software and Systems Modeling (SoSyM)
Caracal: dynamic translation of runtime environments for GPUs
Proceedings of the Fourth Workshop on General Purpose Processing on Graphics Processing Units
SIMD re-convergence at thread frontiers
Proceedings of the 44th Annual IEEE/ACM International Symposium on Microarchitecture
Structuring acyclic process models
Information Systems
International Journal of High Performance Computing Applications
Understanding business process models: the costs and benefits of structuredness
CAiSE'12 Proceedings of the 24th international conference on Advanced Information Systems Engineering
Reducing divergence in GPGPU programs with loop merging
Proceedings of the 6th Workshop on General Purpose Processor Using Graphics Processing Units
Hi-index | 0.00 |
Advanced computer architectures rely mainly on compiler optimizations for parallelization, vectorization, and pipelining. Efficient code generation is based on a control dependence analysis to find the basic blocks and to determine the regions of control. However, unstructured branch statements, such as jumps and goto's, render the control flow analysis difficult, time-consuming, and result in poor code generation. Branches are part of many programming languages and occur in legacy and maintenance code as well as in assembler, intermediate languages, and byte code. A simple and effective technique is presented to convert unstructured branches into hammock graph control structures. Using three basic transformations, an equivalent program is obtained in which all control statements have a well-defined scope. In the interest of predication and branch prediction, the number of control variables has been minimized, thereby allowing a limited code replication. The correctness of the transformations has been proven using an axiomatic proof rule system. With respect to previous work, the algorithm is simpler and the branch conditions are less complex, making the program more readable and the code generation more efficient. Additionally, hammock graphs define single entry single exit regions and therefore allow localized optimizations. The restructuring method has been implemented into the parallelizing compiler FPT and allows to extract parallelism in unstructured programs. The use of hammock graph transformations in other application areas such as vectorization, decompilation, and assembly program restructuring is also demonstrated.