TwoAddrInstructionPass::tryInstructionTransform() has a case where it calls
authorCameron Zwarich <zwarich@apple.com>
Sun, 24 Feb 2013 00:27:26 +0000 (00:27 +0000)
committerCameron Zwarich <zwarich@apple.com>
Sun, 24 Feb 2013 00:27:26 +0000 (00:27 +0000)
commitc5a6349ae84309534e0ade8c7c7ddada808e7729
tree314427d293e5e5087c164b71bef1e9ed1f480402
parente7c67492ddc503802128ff20853a23a644f082f9
TwoAddrInstructionPass::tryInstructionTransform() has a case where it calls
itself recursively with a new instruction that has not been finalized, in order
to determine whether to keep the instruction. On 'make check' and test-suite the
only cases where the recursive invocation made any transformations were simple
instruction commutations, so I am restricting the recursive invocation to do
only this.

The other cases wouldn't work correctly when updating LiveIntervals, since the
new instructions don't have slot indices and LiveIntervals hasn't yet been
updated. If the other transformations were actually triggering in any test case
it would be possible to support it with a lot of effort, but since they don't
it's not worth it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175979 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/TwoAddressInstructionPass.cpp