summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SimpleRegisterCoalescing.h
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-03-10 08:11:32 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-03-10 08:11:32 +0000
commit4a3c5eab344a74108123928535aa318f3496b78c (patch)
treed383ecf8b6928eaa0211ea337da37d52a904929a /llvm/lib/CodeGen/SimpleRegisterCoalescing.h
parent831ae495993a7a87d612f7b1cfeed82927e01d88 (diff)
downloadbcm5719-llvm-4a3c5eab344a74108123928535aa318f3496b78c.tar.gz
bcm5719-llvm-4a3c5eab344a74108123928535aa318f3496b78c.zip
- Fix a subtle bug in RemoveCopyByCommutingDef. ALR is the live range where the source is defined; BLR is the live range which is defined by the copy.
If ALR and BLR overlaps and end of BLR extends beyond end of ALR, e.g. A = or A, B ... B = A ... C = A<kill> ... = B then do not add kills of A to the newly created B interval. - Also fix some kill info update bug. llvm-svn: 48141
Diffstat (limited to 'llvm/lib/CodeGen/SimpleRegisterCoalescing.h')
-rw-r--r--llvm/lib/CodeGen/SimpleRegisterCoalescing.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SimpleRegisterCoalescing.h b/llvm/lib/CodeGen/SimpleRegisterCoalescing.h
index 543d4704d10..cf204a538cf 100644
--- a/llvm/lib/CodeGen/SimpleRegisterCoalescing.h
+++ b/llvm/lib/CodeGen/SimpleRegisterCoalescing.h
@@ -201,6 +201,10 @@ namespace llvm {
/// subregister.
void UpdateRegDefsUses(unsigned SrcReg, unsigned DstReg, unsigned SubIdx);
+ /// RemoveUnnecessaryKills - Remove kill markers that are no longer accurate
+ /// due to live range lengthening as the result of coalescing.
+ void RemoveUnnecessaryKills(unsigned Reg, LiveInterval &LI);
+
/// ShortenDeadCopyLiveRange - Shorten a live range as it's artificially
/// extended by a dead copy. Mark the last use (if any) of the val# as kill
/// as ends the live range there. If there isn't another use, then this
OpenPOWER on IntegriCloud