OSDN Git Service

Allow dead insts to be kept in DeadRemat only when they are rematerializable.
authorWei Mi <wmi@google.com>
Fri, 8 Jul 2016 21:08:09 +0000 (21:08 +0000)
committerWei Mi <wmi@google.com>
Fri, 8 Jul 2016 21:08:09 +0000 (21:08 +0000)
commit4eae2788eab06c279c9feca8d64140fa7b509321
tree03ad9764154e228d3d73cf36d234112164fd2c41
parente042fe59dc320a2690ef2107638dbe1fd30b7929
Allow dead insts to be kept in DeadRemat only when they are rematerializable.

Because isReallyTriviallyReMaterializableGeneric puts many limits on
rematerializable instructions, this fix can prevent instructions with
tied virtual operands and instructions with virtual register uses from
being kept in DeadRemat, so as to workaround the live interval consistency
problem for the dummy instructions kept in DeadRemat.

But we still need to fix the live interval consistency problem. This patch
is just a short time relieve. PR28464 has been filed as a reminder.

Differential Revision: http://reviews.llvm.org/D19486

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274928 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/LiveRangeEdit.h
lib/CodeGen/InlineSpiller.cpp
lib/CodeGen/LiveRangeEdit.cpp
lib/CodeGen/RegAllocGreedy.cpp
lib/CodeGen/SplitKit.cpp
lib/CodeGen/SplitKit.h