[llvm-commits] [llvm] r45498 - in /llvm/trunk/lib/Target/X86: X86InstrInfo.cpp X86InstrInfo.h
Bill Wendling
isanbard at gmail.com
Wed Jan 2 13:10:43 PST 2008
Author: void
Date: Wed Jan 2 15:10:40 2008
New Revision: 45498
URL: http://llvm.org/viewvc/llvm-project?rev=45498&view=rev
Log:
Machine LICM will check that operands are defined outside of the loop. Also
check that register isn't 0 before going further.
Modified:
llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
llvm/trunk/lib/Target/X86/X86InstrInfo.h
Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp?rev=45498&r1=45497&r2=45498&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.cpp Wed Jan 2 15:10:40 2008
@@ -144,37 +144,6 @@
return true;
}
-/// isDefinedInEntryBlock - Goes through the entry block to see if the given
-/// virtual register is indeed defined in the entry block.
-///
-bool X86InstrInfo::isDefinedInEntryBlock(const MachineBasicBlock &Entry,
- unsigned VReg) const {
- assert(MRegisterInfo::isVirtualRegister(VReg) &&
- "Map only holds virtual registers!");
- MachineInstrMap.grow(VReg);
- if (MachineInstrMap[VReg]) return true;
-
- MachineBasicBlock::const_iterator I = Entry.begin(), E = Entry.end();
-
- for (; I != E; ++I) {
- const MachineInstr &MI = *I;
- unsigned NumOps = MI.getNumOperands();
-
- for (unsigned i = 0; i < NumOps; ++i) {
- const MachineOperand &MO = MI.getOperand(i);
-
- if(MO.isRegister() && MO.isDef() &&
- MRegisterInfo::isVirtualRegister(MO.getReg()) &&
- MO.getReg() == VReg) {
- MachineInstrMap[VReg] = &MI;
- return true;
- }
- }
- }
-
- return false;
-}
-
/// isReallySideEffectFree - If the M_MAY_HAVE_SIDE_EFFECTS flag is set, this
/// method is called to determine if the specific instance of this instruction
/// has side effects. This is useful in cases of instructions, like loads, which
@@ -189,8 +158,7 @@
// Loads from global addresses which aren't redefined in the function are
// side effect free.
- if (MRegisterInfo::isVirtualRegister(Reg) &&
- isDefinedInEntryBlock(MI->getParent()->getParent()->front(), Reg) &&
+ if (Reg != 0 && MRegisterInfo::isVirtualRegister(Reg) &&
MI->getOperand(2).isImmediate() &&
MI->getOperand(3).isRegister() &&
MI->getOperand(4).isGlobalAddress() &&
Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.h?rev=45498&r1=45497&r2=45498&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.h (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.h Wed Jan 2 15:10:40 2008
@@ -225,13 +225,6 @@
class X86InstrInfo : public TargetInstrInfoImpl {
X86TargetMachine &TM;
const X86RegisterInfo RI;
- mutable IndexedMap<const MachineInstr*, VirtReg2IndexFunctor> MachineInstrMap;
-
- /// isDefinedInEntryBlock - Goes through the entry block to see if the given
- /// virtual register is indeed defined in the entry block.
- ///
- bool isDefinedInEntryBlock(const MachineBasicBlock &Entry,
- unsigned VReg) const;
public:
X86InstrInfo(X86TargetMachine &tm);
More information about the llvm-commits
mailing list