It has finally happened. Spiller is now using live interval info.
commit047e9d1fa34f28a3db20f841eec1d194abf2a1da
authorEvan Cheng <evan.cheng@apple.com>
Tue, 21 Apr 2009 22:46:52 +0000 (21 22:46 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 21 Apr 2009 22:46:52 +0000 (21 22:46 +0000)
tree4f04dd784d95779528ce075c994f65335631067c
parent101a267d8a32e6aef0bbe6fe1b5ff540828a00a4
It has finally happened. Spiller is now using live interval info.

This fixes a very subtle bug. vr defined by an implicit_def is allowed overlap with any register since it doesn't actually modify anything. However, if it's used as a two-address use, its live range can be extended and it can be spilled. The spiller must take care not to emit a reload for the vn number that's defined by the implicit_def. This is both a correctness and performance issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69743 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/LiveIntervalAnalysis.h
lib/CodeGen/LiveIntervalAnalysis.cpp
lib/CodeGen/RegAllocLinearScan.cpp
lib/CodeGen/RegAllocPBQP.cpp
lib/CodeGen/Spiller.cpp
lib/CodeGen/Spiller.h
test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll [new file with mode: 0644]