diff options
author | Bill Wendling <isanbard@gmail.com> | 2008-01-07 08:05:29 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2008-01-07 08:05:29 +0000 |
commit | a3bdad153fa4cd16a7d3d95391b9ab2eb0da102a (patch) | |
tree | ed50f90036c77210a75851e6e08a6da04f8f535e /llvm | |
parent | d7857eafd0e5bbf5944fdfc880e9c47fe71fecc0 (diff) | |
download | bcm5719-llvm-a3bdad153fa4cd16a7d3d95391b9ab2eb0da102a.tar.gz bcm5719-llvm-a3bdad153fa4cd16a7d3d95391b9ab2eb0da102a.zip |
Operand 1 should be a register. We don't care if it's a preg, vreg, or 0.
llvm-svn: 45699
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp index 42e41279f60..a24140cb0d5 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -771,19 +771,15 @@ bool X86InstrInfo::isReallySideEffectFree(MachineInstr *MI) const { switch (MI->getOpcode()) { default: break; case X86::MOV32rm: - if (MI->getOperand(1).isRegister()) { - unsigned Reg = MI->getOperand(1).getReg(); - const X86Subtarget &ST = TM.getSubtarget<X86Subtarget>(); - - // Loads from stubs of global addresses are side effect free. - if (Reg != 0 && MRegisterInfo::isVirtualRegister(Reg) && - MI->getOperand(2).isImm() && MI->getOperand(3).isReg() && - MI->getOperand(4).isGlobal() && - ST.GVRequiresExtraLoad(MI->getOperand(4).getGlobal(), TM, false) && - MI->getOperand(2).getImm() == 1 && - MI->getOperand(3).getReg() == 0) - return true; - } + // Loads from stubs of global addresses are side effect free. + if (MI->getOperand(1).isReg() && + MI->getOperand(2).isImm() && MI->getOperand(3).isReg() && + MI->getOperand(4).isGlobal() && + TM.getSubtarget<X86Subtarget>().GVRequiresExtraLoad + (MI->getOperand(4).getGlobal(), TM, false) && + MI->getOperand(2).getImm() == 1 && + MI->getOperand(3).getReg() == 0) + return true; // FALLTHROUGH case X86::MOV8rm: case X86::MOV16rm: |