It has finally happened. Spiller is now using live interval info.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 21 Apr 2009 22:46:52 +0000 (22:46 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 21 Apr 2009 22:46:52 +0000 (22:46 +0000)
commit5b69ebac857104770b1a751bf7a463fda4330a62
tree4f04dd784d95779528ce075c994f65335631067c
parent578ccf81e5b94965e3ce8b4eadb6834e39f5f41d
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]