diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-04-21 22:46:52 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-04-21 22:46:52 +0000 |
commit | 5b69ebac857104770b1a751bf7a463fda4330a62 (patch) | |
tree | 4f04dd784d95779528ce075c994f65335631067c /include/llvm/CodeGen/LiveIntervalAnalysis.h | |
parent | 578ccf81e5b94965e3ce8b4eadb6834e39f5f41d (diff) | |
download | external_llvm-5b69ebac857104770b1a751bf7a463fda4330a62.zip external_llvm-5b69ebac857104770b1a751bf7a463fda4330a62.tar.gz external_llvm-5b69ebac857104770b1a751bf7a463fda4330a62.tar.bz2 |
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
Diffstat (limited to 'include/llvm/CodeGen/LiveIntervalAnalysis.h')
-rw-r--r-- | include/llvm/CodeGen/LiveIntervalAnalysis.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h index 33837a2..b54cf64 100644 --- a/include/llvm/CodeGen/LiveIntervalAnalysis.h +++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h @@ -300,9 +300,9 @@ namespace llvm { r2iMap_.erase(I); } - /// isRemoved - returns true if the specified machine instr has been - /// removed. - bool isRemoved(MachineInstr* instr) const { + /// isNotInMIMap - returns true if the specified machine instr has been + /// removed or was never entered in the map. + bool isNotInMIMap(MachineInstr* instr) const { return !mi2iMap_.count(instr); } |