Changes in directory llvm/lib/CodeGen:
LiveIntervalAnalysis.cpp updated: 1.193 -> 1.194 LiveVariables.cpp updated: 1.61 -> 1.62 MachineInstr.cpp updated: 1.127 -> 1.128 RegAllocLocal.cpp updated: 1.93 -> 1.94 --- Log message: Add implicit def / use operands to MachineInstr. --- Diffs of the changes: (+11 -29) LiveIntervalAnalysis.cpp | 9 +-------- LiveVariables.cpp | 19 ++----------------- MachineInstr.cpp | 8 ++++++-- RegAllocLocal.cpp | 4 ++-- 4 files changed, 11 insertions(+), 29 deletions(-) Index: llvm/lib/CodeGen/LiveIntervalAnalysis.cpp diff -u llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.193 llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.194 --- llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.193 Wed Nov 8 13:16:43 2006 +++ llvm/lib/CodeGen/LiveIntervalAnalysis.cpp Fri Nov 10 02:38:19 2006 @@ -658,16 +658,9 @@ } for (; MI != miEnd; ++MI) { - const TargetInstrDescriptor &TID = tii_->get(MI->getOpcode()); DEBUG(std::cerr << MIIndex << "\t" << *MI); - - // Handle implicit defs. - if (TID.ImplicitDefs) { - for (const unsigned *ImpDef = TID.ImplicitDefs; *ImpDef; ++ImpDef) - handleRegisterDef(MBB, MI, MIIndex, *ImpDef); - } - // Handle explicit defs. + // Handle defs. for (int i = MI->getNumOperands() - 1; i >= 0; --i) { MachineOperand &MO = MI->getOperand(i); // handle register defs - build intervals Index: llvm/lib/CodeGen/LiveVariables.cpp diff -u llvm/lib/CodeGen/LiveVariables.cpp:1.61 llvm/lib/CodeGen/LiveVariables.cpp:1.62 --- llvm/lib/CodeGen/LiveVariables.cpp:1.61 Thu Nov 2 14:25:49 2006 +++ llvm/lib/CodeGen/LiveVariables.cpp Fri Nov 10 02:38:19 2006 @@ -228,7 +228,6 @@ for (MachineBasicBlock::iterator I = MBB->begin(), E = MBB->end(); I != E; ++I) { MachineInstr *MI = I; - const TargetInstrDescriptor &MID = TII.get(MI->getOpcode()); // Process all of the operands of the instruction... unsigned NumOperandsToProcess = MI->getNumOperands(); @@ -238,14 +237,7 @@ if (MI->getOpcode() == TargetInstrInfo::PHI) NumOperandsToProcess = 1; - // Loop over implicit uses, using them. - if (MID.ImplicitUses) { - for (const unsigned *ImplicitUses = MID.ImplicitUses; - *ImplicitUses; ++ImplicitUses) - HandlePhysRegUse(*ImplicitUses, MI); - } - - // Process all explicit uses... + // Process all uses... for (unsigned i = 0; i != NumOperandsToProcess; ++i) { MachineOperand &MO = MI->getOperand(i); if (MO.isRegister() && MO.isUse() && MO.getReg()) { @@ -258,14 +250,7 @@ } } - // Loop over implicit defs, defining them. - if (MID.ImplicitDefs) { - for (const unsigned *ImplicitDefs = MID.ImplicitDefs; - *ImplicitDefs; ++ImplicitDefs) - HandlePhysRegDef(*ImplicitDefs, MI); - } - - // Process all explicit defs... + // Process all defs... for (unsigned i = 0; i != NumOperandsToProcess; ++i) { MachineOperand &MO = MI->getOperand(i); if (MO.isRegister() && MO.isDef() && MO.getReg()) { Index: llvm/lib/CodeGen/MachineInstr.cpp diff -u llvm/lib/CodeGen/MachineInstr.cpp:1.127 llvm/lib/CodeGen/MachineInstr.cpp:1.128 --- llvm/lib/CodeGen/MachineInstr.cpp:1.127 Wed Oct 25 13:08:14 2006 +++ llvm/lib/CodeGen/MachineInstr.cpp Fri Nov 10 02:38:19 2006 @@ -205,8 +205,12 @@ OS << " "; ::print(mop, OS, TM); - if (mop.isReg() && mop.isDef()) - OS << "<def>"; + if (mop.isReg()) { + if (mop.isImplicit()) + OS << (mop.isDef() ? "<imp-def>" : "<imp-use>"); + else if (mop.isDef()) + OS << "<def>"; + } } OS << "\n"; Index: llvm/lib/CodeGen/RegAllocLocal.cpp diff -u llvm/lib/CodeGen/RegAllocLocal.cpp:1.93 llvm/lib/CodeGen/RegAllocLocal.cpp:1.94 --- llvm/lib/CodeGen/RegAllocLocal.cpp:1.93 Tue Sep 19 13:02:01 2006 +++ llvm/lib/CodeGen/RegAllocLocal.cpp Fri Nov 10 02:38:19 2006 @@ -561,7 +561,7 @@ for (unsigned i = 0; i != MI->getNumOperands(); ++i) { MachineOperand& MO = MI->getOperand(i); // here we are looking for only used operands (never def&use) - if (MO.isRegister() && !MO.isDef() && MO.getReg() && + if (MO.isRegister() && !MO.isDef() && !MO.isImplicit() && MO.getReg() && MRegisterInfo::isVirtualRegister(MO.getReg())) MI = reloadVirtReg(MBB, MI, i); } @@ -596,7 +596,7 @@ // are defined, and marking explicit destinations in the PhysRegsUsed map. for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) { MachineOperand& MO = MI->getOperand(i); - if (MO.isRegister() && MO.isDef() && MO.getReg() && + if (MO.isRegister() && MO.isDef() && !MO.isImplicit() && MO.getReg() && MRegisterInfo::isPhysicalRegister(MO.getReg())) { unsigned Reg = MO.getReg(); if (PhysRegsUsed[Reg] == -2) continue; // Something like ESP. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits