Summary: | Ideally, compilers should produce object code that is at least as efficient as hand-written code. The key step toward this goal is developing techniques by which a compiler can derive the information that can help in optimization. This is the concern of flow analysis. Recently, with the emergence of parallel computer systems, both parallelization of the compiler and production of code for parallel processors have become crucial issues for compiler development (1,2,3). === This thesis presents new methods of compiler flow analysis for modern computer languages running on a uniprocessor or multiprocessor. These methods allow flow analysis information to be extracted directly from a high-level representation of the source programs, even in parallel. To achieve this goal, we develop and utilize the Extended Abstract Syntax Tree (EAST), and the Symbol Table Data Relational Tree (STDRT) representations, to perform our flow analysis based on these structures. By these approaches, the compiler is able to keep the most useful information and apply this information during various optimization stages. We also introduce several scheduling algorithms for parallelizing the flow analysis phase. An experimental compiler and its results support the usefulness of these methods.
|