On May 3, 2007, at 5:27 PM, Evan Cheng wrote: > > > Changes in directory llvm/lib/Target/ARM: > > ARMISelLowering.cpp updated: 1.49 -> 1.50 > --- > Log message: > > On Mac OS X, GV requires an extra load only when relocation-model > is non-static.
Does ELF do something similar? If not, this should probably be method on ARMSubTarget, like the X86 backend does. -Chris > --- > Diffs of the changes: (+6 -5) > > ARMISelLowering.cpp | 11 ++++++----- > 1 files changed, 6 insertions(+), 5 deletions(-) > > > Index: llvm/lib/Target/ARM/ARMISelLowering.cpp > diff -u llvm/lib/Target/ARM/ARMISelLowering.cpp:1.49 llvm/lib/ > Target/ARM/ARMISelLowering.cpp:1.50 > --- llvm/lib/Target/ARM/ARMISelLowering.cpp:1.49 Thu May 3 > 15:28:35 2007 > +++ llvm/lib/Target/ARM/ARMISelLowering.cpp Thu May 3 19:26:58 2007 > @@ -812,10 +812,11 @@ > } > > /// GVIsIndirectSymbol - true if the GV will be accessed via an > indirect symbol > -/// even in dynamic-no-pic mode. > -static bool GVIsIndirectSymbol(GlobalValue *GV) { > - return (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() || > - (GV->isDeclaration() && !GV->hasNotBeenReadFromBytecode > ())); > +/// even in non-static mode. > +static bool GVIsIndirectSymbol(GlobalValue *GV, Reloc::Model > RelocM) { > + return RelocM != Reloc::Static && > + (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() || > + (GV->isDeclaration() && !GV->hasNotBeenReadFromBytecode())); > } > > SDOperand ARMTargetLowering::LowerGlobalAddressDarwin(SDOperand Op, > @@ -823,7 +824,7 @@ > MVT::ValueType PtrVT = getPointerTy(); > GlobalValue *GV = cast<GlobalAddressSDNode>(Op)->getGlobal(); > Reloc::Model RelocM = getTargetMachine().getRelocationModel(); > - bool IsIndirect = GVIsIndirectSymbol(GV); > + bool IsIndirect = GVIsIndirectSymbol(GV, RelocM); > SDOperand CPAddr; > if (RelocM == Reloc::Static) > CPAddr = DAG.getTargetConstantPool(GV, PtrVT, 2); > > > > _______________________________________________ > 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