Static Interprocedural Slicing of Shared Memory Parallel Programs

Software tools for program debugging, software testing, software maintenance, and program understanding have all effectively utilized static program slicing techniques. In this paper, we present an approach to extend this capability to explicitly parallel shared memory programs written using the OpenMP standard. In particular, interprocedural static program slicing of OpenMP programs is enabled by extending standard program representations for control flow and program dependences to support OpenMP parallel, data, and synchronization constructs. The slicing algorithm builds on the algorithms for interprocedural slicing of sequential programs and an algorithm for intraprocedural slicing of parallel programs.