diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2008-04-09 20:57:25 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2008-04-09 20:57:25 +0000 |
| commit | c8eeb752a32863c5982f27d4ea2678181adc106c (patch) | |
| tree | 0beffb2b388107ade0f079ba33be01accd1311f1 /llvm/lib/CodeGen/SimpleRegisterCoalescing.h | |
| parent | 33b330017893bd5eee9a923bbe7dbf0e2c4f8cfa (diff) | |
| download | bcm5719-llvm-c8eeb752a32863c5982f27d4ea2678181adc106c.tar.gz bcm5719-llvm-c8eeb752a32863c5982f27d4ea2678181adc106c.zip | |
- More aggressively coalescing away copies whose source is defined by an implicit_def.
- Added insert_subreg coalescing support.
llvm-svn: 49448
Diffstat (limited to 'llvm/lib/CodeGen/SimpleRegisterCoalescing.h')
| -rw-r--r-- | llvm/lib/CodeGen/SimpleRegisterCoalescing.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/SimpleRegisterCoalescing.h b/llvm/lib/CodeGen/SimpleRegisterCoalescing.h index 453760a7e7b..7823ba0df4b 100644 --- a/llvm/lib/CodeGen/SimpleRegisterCoalescing.h +++ b/llvm/lib/CodeGen/SimpleRegisterCoalescing.h @@ -196,9 +196,25 @@ namespace llvm { MachineBasicBlock *MBB, unsigned DstReg, unsigned SrcReg); - /// isBackEdgeCopy - Returns true if CopyMI is a back edge copy. + /// CanCoalesceWithImpDef - Returns true if the specified copy instruction + /// from an implicit def to another register can be coalesced away. + bool CanCoalesceWithImpDef(MachineInstr *CopyMI, + LiveInterval &li, LiveInterval &ImpLi) const; + + /// RemoveCopiesFromValNo - The specified value# is defined by an implicit + /// def and it is being removed. Turn all copies from this value# into + /// identity copies so they will be removed. + void RemoveCopiesFromValNo(LiveInterval &li, VNInfo *VNI); + + /// RangeIsDefinedByCopyFromReg - Return true if the specified live range of + /// the specified live interval is defined by a copy from the specified + /// register. + bool RangeIsDefinedByCopyFromReg(LiveInterval &li, LiveRange *LR, + unsigned Reg); + + /// isBackEdgeCopy - Return true if CopyMI is a back edge copy. /// - bool isBackEdgeCopy(MachineInstr *CopyMI, unsigned DstReg); + bool isBackEdgeCopy(MachineInstr *CopyMI, unsigned DstReg) const; /// UpdateRegDefsUses - Replace all defs and uses of SrcReg to DstReg and /// update the subregister number if it is not zero. If DstReg is a @@ -207,6 +223,8 @@ namespace llvm { /// subregister. void UpdateRegDefsUses(unsigned SrcReg, unsigned DstReg, unsigned SubIdx); + void RemoveDeadImpDef(unsigned Reg, LiveInterval &LI); + /// 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); |

