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.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call