Fix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units...
authorEvan Cheng <evan.cheng@apple.com>
Mon, 28 Apr 2008 22:07:13 +0000 (22:07 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 28 Apr 2008 22:07:13 +0000 (22:07 +0000)
commit33bf38ad881fa3d403cc81209d0ae796f94f125e
treeda57facaaf6ffc4f3918df9fa81f3e5981e303c7
parent1fcfc3b6b28b8138168271849001aea15a7a87f0
Fix a bug in RegsForValue::getCopyToRegs() that causes cyclical scheduling units. If it's creating multiple CopyToReg nodes that are "flagged" together, it should not create a TokenFactor for it's chain outputs:

c1, f1 = CopyToReg
c2, f2 = CopyToReg
c3     = TokenFactor c1, c2
 ...
       = user c3, ..., f2

Now that the two CopyToReg's and the user are "flagged" together. They effectively forms a single scheduling unit. The TokenFactor is now both an operand and a successor of the Flagged nodes.

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