diff options
author | Chris Lattner <sabre@nondot.org> | 2006-08-29 23:18:15 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-08-29 23:18:15 +0000 |
commit | 6d8fbef015ff836bcb8f64f52c49805e43f8ea9f (patch) | |
tree | bac466ece426f0541f1394ec2753e12e3a2ca40d /include/llvm/CodeGen/LiveIntervalAnalysis.h | |
parent | 734d8117234dc665c7aecd7b1b696331457f8f50 (diff) |
Teach the coallescer to coallesce live intervals joined by an arbitrary
number of copies, potentially defining live ranges that appear to have
differing value numbers that become identical when coallsced. Among other
things, this fixes CodeGen/X86/shift-coalesce.ll and PR687.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29968 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/LiveIntervalAnalysis.h')
-rw-r--r-- | include/llvm/CodeGen/LiveIntervalAnalysis.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h index 5c19107e1c..845a4b0716 100644 --- a/include/llvm/CodeGen/LiveIntervalAnalysis.h +++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h @@ -174,6 +174,13 @@ namespace llvm { /// it may be possible if other things get coallesced. bool JoinCopy(MachineInstr *CopyMI, unsigned SrcReg, unsigned DstReg); + /// JoinIntervals - Attempt to join these two intervals. On failure, this + /// returns false. Otherwise, if one of the intervals being joined is a + /// physreg, this method always canonicalizes DestInt to be it. The output + /// "SrcInt" will not have been modified, so we can use this information + /// below to update aliases. + bool JoinIntervals(LiveInterval &LHS, LiveInterval &RHS); + /// handleRegisterDef - update intervals for a register def /// (calls handlePhysicalRegisterDef and /// handleVirtualRegisterDef) @@ -200,7 +207,7 @@ namespace llvm { bool AdjustCopiesBackFrom(LiveInterval &IntA, LiveInterval &IntB, - MachineInstr *CopyMI, unsigned CopyIdx); + MachineInstr *CopyMI); bool overlapsAliases(const LiveInterval *lhs, const LiveInterval *rhs) const; |