Fix a bug in the scheduler's handling of "unspillable" vregs.
authorChris Lattner <sabre@nondot.org>
Mon, 20 Dec 2010 00:55:43 +0000 (00:55 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 20 Dec 2010 00:55:43 +0000 (00:55 +0000)
commit37944985a569f8c2b0d75dafd9e2739a9887ac5d
tree3bdd110097a8ef325d2fc11058d28061be809b7c
parente273690d7a52d2ab809e948ef93685885dde66bb
Fix a bug in the scheduler's handling of "unspillable" vregs.
Imagine we see:

EFLAGS = inst1
EFLAGS = inst2 FLAGS
gpr = inst3 EFLAGS

Previously, we would refuse to schedule inst2 because it clobbers
the EFLAGS of the predecessor.  However, it also uses the EFLAGS
of the predecessor, so it is safe to emit.  SDep edges ensure that
the right order happens already anyway.

This fixes 2 testsuite crashes with the X86 patch I'm going to
commit next.

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