Title of article :
Code motion in the presence of critical edges without bidirectional data flow analysis
Author/Authors :
Oliver Rüthing، نويسنده ,
Issue Information :
ماهنامه با شماره پیاپی سال 2001
Abstract :
Bidirectional data flow analysis has become the standard technique for solving bit-vector-based code motion problems in the presence of critical edges. Unfortunately, bidirectional analyses are conceptually and computationally harder than their unidirectional counterparts. In this paper we show that code motion in the presence of critical edges can be achieved without bidirectional data flow analyses. This is demonstrated by means of an adaption of our algorithm for lazy code motion (Knoop et al., Proc. ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI)’92, ACM SIGPLAN Notices, vol. 27, 7, San Francisco, CA, June 1992, pp. 224–234), which is developed from a fresh, specification-oriented view. As the key element to cope with critical edges homogeneity constraints are introduced in order to avoid anomalies during the code motion process. The “critical” variant of lazy code motion is realized by means of three alternative iteration strategies: (1) a “classical” approach using bidirectional analyses, (2) a unidirectional approach which requires that the control flow is enriched by additional shortcut edges and (3) a hybrid approach which combines unidirectional information flow with the side propagation of information.
Keywords :
Computational complexity , Bidirectional data flow analysis , Code motion , Program optimization , Partial redundancy elimination , Critical edges
Journal title :
Science of Computer Programming
Journal title :
Science of Computer Programming