Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Countable nondeterminism and random assignment
Journal of the ACM (JACM)
Crafting a compiler
Transputer instruction set: a compiler writer's guide
Transputer instruction set: a compiler writer's guide
Introduction to algorithms
Process algebra
A catalog of complexity classes
Handbook of theoretical computer science (vol. A)
Data flow equations for explicitly parallel programs
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Information Processing Letters - Special issue on the calculational method
Parallelism for free: efficient and optimal bitvector analyses for parallel programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Precise interprocedural dataflow analysis with applications to constant propagation
TAPSOFT '95 Selected papers from the 6th international joint conference on Theory and practice of software development
Advanced compiler design and implementation
Advanced compiler design and implementation
Efficient algorithms for pre* and post* on interprocedural parallel flow graphs
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Context-sensitive synchronization-sensitive analysis is undecidable
ACM Transactions on Programming Languages and Systems (TOPLAS)
On optimal slicing of parallel programs
STOC '01 Proceedings of the thirty-third annual ACM symposium on Theory of computing
The regular viewpoint on PA-processes
Theoretical Computer Science
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Flow Analysis of Computer Programs
Flow Analysis of Computer Programs
Principles of Program Analysis
Principles of Program Analysis
Euro-Par '98 Proceedings of the 4th International Euro-Par Conference on Parallel Processing
Constrained Properties, Semilinear Systems, and Petri Nets
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
Invariance of Approximate Semantics with Respect to Program Transformations
GI - 11. Jahrestagung in Verbindung mit Third Conference of the European Co-operation in Informatics (ECI)
Constraint-based inter-procedural analysis of parallel programs
Nordic Journal of Computing
The complexity of theorem-proving procedures
STOC '71 Proceedings of the third annual ACM symposium on Theory of computing
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
Regular symbolic analysis of dynamic networks of pushdown systems
CONCUR 2005 - Concurrency Theory
Conflict Analysis of Programs with Procedures, Dynamic Thread Creation, and Monitors
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Model checking multithreaded programs with asynchronous atomic methods
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
On the computational complexity of dynamic slicing problems for program schemas
Mathematical Structures in Computer Science - Programming Language Interference and Dependence
Precise fixpoint-based analysis of programs with thread-creation and procedures
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
Hi-index | 5.23 |
It is known that interprocedural detection of copy constants and elimination of faint code in parallel programs are undecidable problems, if base statements are assumed to execute atomically. We show that these problems become decidable, if this assumption is abandoned. So, the (unrealistic) idealization from program verification "atomic execution of base statements" introduced in order to simplify matters, actually increases the difficulty of these problems from the point of view of program analysis: amazingly these problems become more tractable if we adopt a less idealized, more realistic model of execution.We introduce an effective abstract domain of antichains of dependence traces that allows us to perform a precise interprocedural dependence analysis in (non-atomically executing) parallel programs. The main idea is to trace sequences of dependences exhibited successively by program executions. We define operations on antichains of dependence traces and show that they precisely abstract the corresponding operations on sets of non-atomic program executions. Using these operations, we can analyze dependences by means of an abstract interpretation of constraint systems that characterize sets of program executions of interest. The result of the dependence analysis can in turn be used to detect all copy constants and to eliminate faint code.While the run-time of the algorithms is exponential in the number of program variables, it is polynomial in the program size. Hence, they are polynomial-time algorithms if the number of program variables is bounded. In order to justify their overall exponential run-time, we show that both detection of copy constants and elimination of faint code are intractable (NP-hard) even when the atomic execution idealization is abandoned. This holds already for parallel programs without loops or procedures.