Most current compiler analysis techniques are unable to cope with the semantics introduced by explicit parallel and synchronization constructs in parallel programs. In this paper we propose new analysis and optimization techniques for compiling explicitly parallel programs that use mutual exclusion synchronization. We introduce the CSSAME form, an extension of the Concurrent Static Single Assignment (CSSA) form that incorporates mutual exclusion into a data flow framework for explicitly parallel programs. We show how this analysis can improve the effectiveness of constant propagation in a parallel program. We also modify a deadcode elimination algorithm to work on explicitly parallel programs. Finally, we introduce lock independent code motion, a new optimizationtechnique that attempts to minimize the size of critical sections in the program.
Diego Novillo, Ronald C. Unrau, Jonathan Schaeffer