diff options
author | Chris Lattner <sabre@nondot.org> | 2006-09-02 05:32:53 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-09-02 05:32:53 +0000 |
commit | 1acb17cb8392dce33079fe45f383944ec6616757 (patch) | |
tree | f989b51f04be1052ae131319be103278ac3b8819 /include/llvm/CodeGen/LiveIntervalAnalysis.h | |
parent | f21f0205b5dec61f165518887f54e01ab5aab13c (diff) | |
download | llvm-1acb17cb8392dce33079fe45f383944ec6616757.tar.gz llvm-1acb17cb8392dce33079fe45f383944ec6616757.tar.bz2 llvm-1acb17cb8392dce33079fe45f383944ec6616757.tar.xz |
Iteration is required for some cases, even if they don't occur in crafty.
Restore it, which re-fixes X86/2006-08-21-ExtraMovInst.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30050 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/LiveIntervalAnalysis.h')
-rw-r--r-- | include/llvm/CodeGen/LiveIntervalAnalysis.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h index 030b3cfea0..4b31766285 100644 --- a/include/llvm/CodeGen/LiveIntervalAnalysis.h +++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h @@ -53,6 +53,17 @@ namespace llvm { std::vector<bool> allocatableRegs_; public: + struct CopyRec { + MachineInstr *MI; + unsigned SrcReg, DstReg; + }; + CopyRec getCopyRec(MachineInstr *MI, unsigned SrcReg, unsigned DstReg) { + CopyRec R; + R.MI = MI; + R.SrcReg = SrcReg; + R.DstReg = DstReg; + return R; + } struct InstrSlots { enum { LOAD = 0, @@ -150,9 +161,10 @@ namespace llvm { /// joinIntervals - join compatible live intervals void joinIntervals(); - /// CopyCoallesceInMBB - Coallsece copies in the specified MBB. - void CopyCoallesceInMBB(MachineBasicBlock *MBB); - + /// CopyCoallesceInMBB - Coallsece copies in the specified MBB, putting + /// copies that cannot yet be coallesced into the "TryAgain" list. + void CopyCoallesceInMBB(MachineBasicBlock *MBB, + std::vector<CopyRec> &TryAgain); /// JoinCopy - Attempt to join intervals corresponding to SrcReg/DstReg, /// which are the src/dst of the copy instruction CopyMI. This returns true /// if the copy was successfully coallesced away, or if it is never possible |