Hrm. ReMat of load from argument area is being handled as a special case in LiveIntervals::isReMaterializable(). Having isReallyTrivallyReMaterializable() returns true for it shouldn't make any difference. I'll look at this.
Evan On Jan 4, 2008, at 10:10 PM, Chris Lattner wrote: > 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 _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits