Author: lattner Date: Sat Jan 5 00:10:42 2008 New Revision: 45623 URL: http://llvm.org/viewvc/llvm-project?rev=45623&view=rev Log: enable sinking and licm of loads from the argument area. I'd like to enable this for remat, but can't due to an RA bug.
Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.cpp Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp?rev=45623&r1=45622&r2=45623&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (original) +++ llvm/trunk/lib/Target/X86/X86InstrInfo.cpp Sat Jan 5 00:10:42 2008 @@ -141,6 +141,18 @@ MI->getOperand(2).getImm() == 1 && MI->getOperand(3).getReg() == 0) return true; + + // If this is a load from a fixed argument slot, we know the value is + // invariant across the whole function, because we don't redefine argument + // values. +#if 0 + // FIXME: This is disabled due to a remat bug. rdar://5671644 + MachineFunction *MF = MI->getParent()->getParent(); + if (MI->getOperand(1).isFI() && + MF->getFrameInfo()->isFixedObjectIndex(MI->getOperand(1).getIndex())) + return true; +#endif + return false; } // All other instructions marked M_REMATERIALIZABLE are always trivially @@ -188,6 +200,15 @@ MI->getOperand(2).getImm() == 1 && MI->getOperand(3).getReg() == 0) return true; + + // If this is a load from a fixed argument slot, we know the value is + // invariant across the whole function, because we don't redefine argument + // values. + MachineFunction *MF = MI->getParent()->getParent(); + if (MI->getOperand(1).isFI() && + MF->getFrameInfo()->isFixedObjectIndex(MI->getOperand(1).getIndex())) + return true; + return false; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits