Fix liveness calculation when splitting critical edges during PHI elimination.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 11 Nov 2009 19:31:31 +0000 (19:31 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 11 Nov 2009 19:31:31 +0000 (19:31 +0000)
commit3e20475feebca3bfb29375ac7f3e5acbeb2a95c8
treeab6b159d6b6c15d5278703254f21998e6f66e0d1
parenteba4ed9cbb8dc4d478c71b5cbe5b846ac79c105d
Fix liveness calculation when splitting critical edges during PHI elimination.

- Edges are split before any phis are eliminated, so the code is SSA.

- Create a proper IR BasicBlock for the split edges.

- LiveVariables::addNewBlock now has same syntax as
  MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
  set rather than successor live-in set.

This feature still causes some miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86867 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/LiveVariables.h
lib/CodeGen/LiveVariables.cpp
lib/CodeGen/PHIElimination.cpp
lib/CodeGen/PHIElimination.h