diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2008-03-10 08:11:32 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2008-03-10 08:11:32 +0000 |
| commit | 4a3c5eab344a74108123928535aa318f3496b78c (patch) | |
| tree | d383ecf8b6928eaa0211ea337da37d52a904929a /llvm/lib/CodeGen/SimpleRegisterCoalescing.h | |
| parent | 831ae495993a7a87d612f7b1cfeed82927e01d88 (diff) | |
| download | bcm5719-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.h | 4 |
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 |

