summaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/LiveIntervalAnalysis.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-09-02 05:32:53 +0000
committerChris Lattner <sabre@nondot.org>2006-09-02 05:32:53 +0000
commit1acb17cb8392dce33079fe45f383944ec6616757 (patch)
treef989b51f04be1052ae131319be103278ac3b8819 /include/llvm/CodeGen/LiveIntervalAnalysis.h
parentf21f0205b5dec61f165518887f54e01ab5aab13c (diff)
downloadllvm-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.h18
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