Do not rerun LVA if only live-out has changed.
authorPat Gavlin <pagavlin@microsoft.com>
Mon, 9 Jan 2017 20:12:14 +0000 (12:12 -0800)
committerPat Gavlin <pagavlin@microsoft.com>
Tue, 10 Jan 2017 18:21:13 +0000 (10:21 -0800)
commitdbbd52ee1923c6fc214465952203d4b24d972f25
treeeb84c607cca0f24cfaa58d9e681c12d36eba6fc2
parent589a5afc84d3c6e63b6cc75192894303177d3be3
Do not rerun LVA if only live-out has changed.

If only the live-out set for a block changes during live variable
analysis, the LVA algorithm does not need to be re-run. As per the
dataflow equations for LVA:

    liveOut(block) = union(liveIn(s) for all s in successors(block))

Thus, unless a change to the live-out set for a block propagates through
to a change to the live-in set for that block, it will not affect the
live-in/out sets of any of its predecessors and liveness need not be
re-run.

Commit migrated from https://github.com/dotnet/coreclr/commit/4b2c59bcee02ea95844abfe00e86b1cb7adfdd0f
src/coreclr/src/jit/liveness.cpp