Section: New Results
A Non-Iterative Data-Flow Algorithm for Computing Liveness Sets in Strict SSA Programs
Participants : Benoit Boissinot, Florian Brandner, Alain Darte, Benoît Dupont de Dinechin [Kalray] , Fabrice Rastello.
We revisited the problem of computing liveness sets, i.e., the sets of variables live-in and live-out of basic blocks, for programs in strict static single assignment (SSA). In strict SSA, aka SSA with dominance property, the definition of a variable always dominates all its uses. We exploited this property and the concept of loop-nesting forest to design a fast two-phase data-flow algorithm: a first pass traverses the control-flow graph (CFG), propagating liveness information backwards, a second pass traverses the loop-nesting forest, updating liveness sets within loops. The algorithm is proved correct even for irreducible CFGs.
We analyzed its algorithmic complexity and evaluated its efficiency on SPEC INT 2000. Compared to traditional iterative data-flow approaches, which perform
updates until a fixed point is reached, our algorithm is 2 times faster on
average. Other approaches are possible that propagate from uses to
definitions, one variable at a time, instead of unioning sets as in data-flow
analysis. Our algorithm is
This work has been presented at the conference APLAS'11 [5] .