next up previous contents
Next: Optimizations Up: CMSC 731 (Spring 1998) Previous: Contents

Introduction

There are a large number of possible compiler optimizations that can be used to improve the efficiency of code. In this project, I implemented five basic optimizations, namely - local constant folding and common sub-expression elimination (using value numbering), unreachable code elimination, global constant propagation, loop invariant code motion and dead code elimination.

All these optimizations were tested on a set of six benchmark programs (5 fortran programs and 1 C program). These are standard benchmark programs which are computation intensive. They are as follows -

tabular57

I used the SimpleSUIF compiler, developed at Stanford University, CA. The SimpleSUIF front-end outputs an intermediate representation of the code, which serves as the input to my optimizer. The output of the optimizer is used by the compiler back-end to generate the actual machine dependent code. The profiling of the optimized code was done using QPT2 (Quick Profiler and Tracer). I report the actual number of instructions executed by the optimized code as well as the number of SimpleSUIF instructions generated after optimization for each of the benchmarks.



Suman Banerjee
Tue Jun 16 14:38:56 EDT 1998