Fix PR14732 by handling all kinds of IMPLICIT_DEF live ranges.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 3 Jan 2013 00:47:51 +0000 (00:47 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 3 Jan 2013 00:47:51 +0000 (00:47 +0000)
commit725d57682bf7e5ba3469ce9a93136de38f4a6bc6
tree7f5a4a895b77874c7cfabfd4b4a609d0e409e027
parent0793f4501c0df0a0595d5f68b8c821eedc61d6ea
Fix PR14732 by handling all kinds of IMPLICIT_DEF live ranges.

Most IMPLICIT_DEF instructions are removed by the ProcessImplicitDefs
pass, and a few are reinserted by PHIElimination when a PHI argument is
<undef>.

RegisterCoalescer was assuming that all IMPLICIT_DEF live ranges look
like those created by PHIElimination, and that their live range never
leaves the basic block.

The PR14732 test case does tricks with PHI nodes that causes a longer
IMPLICIT_DEF live range to appear. This happens very rarely, but
RegisterCoalescer should be able to handle it.

llvm-svn: 171435
llvm/lib/CodeGen/RegisterCoalescer.cpp
llvm/test/CodeGen/X86/coalesce-implicitdef.ll [new file with mode: 0644]