Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming - PPOPP '93
Non-conmu-rency analysis is a set of techniques for statically identifying pairs (or sets) of statements in a concurrent progrmu which can never happen together. This infomtion aids programmers in debugging and manually optimizing programs, improves the precision of dat a flow analysis, enables optimized translation of rendezvous, facilitates dead code elimination and other automatic optimization, and allows anomaly detection in explicitly parallel programs. We present a framework for
... ence y analysis, capable of incorporating previous analysis algorithms [CS88, D S91] and improving upon them. We show general theoretical results which are useful in estimating nOnconcm-rent y, and examples of non-concnrmnc y emalysis frameworks for two synchronization primitives: the Ada rendezvous and binary semaphores. Both of these frameworks have a loworder polynomial bound on worst-case solution time. We provide experiment al evidence that static non-concurrency analysis of Ada programs can be accomplished in a reasonable time, and is generally quite accurate. Our framework, and the set of refinement. components we develop, also exhibits dramatic accuracy improvements over [D S91], when the latter is used as a standalone algorithm, as demonstrate ed by our experiments. 1 Introduction. Parallel and concurrent programs are often explicitly divided into tasks by the programmer. The tasks may synchronize with each other at various points, to request services or information from each other, or to prevent races. If the synchronization structure is complex, it may be difficult to determine a priori which parts of the program may, or may not, execute in parallel.