Nowadays we have two functions for the GV lowering: one for ELF and one for Darwin. So, the ELF and Darwin GV lowering implementations are completely different and ELF doesn't use the auxiliary function GVIsIndirectSymbol.
<br><br>Lauro<br><br><div><span class="gmail_quote">2007/5/3, Evan Cheng <<a href="mailto:evan.cheng@apple.com">evan.cheng@apple.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
No idea. Lauro?<br><br>Evan<br>On May 3, 2007, at 5:33 PM, Chris Lattner wrote:<br><br>><br>> On May 3, 2007, at 5:27 PM, Evan Cheng wrote:<br>><br>>><br>>><br>>> Changes in directory llvm/lib/Target/ARM:
<br>>><br>>> ARMISelLowering.cpp updated: 1.49 -> 1.50<br>>> ---<br>>> Log message:<br>>><br>>> On Mac OS X, GV requires an extra load only when relocation-model<br>>> is non-static.
<br>><br>> Does ELF do something similar?  If not, this should probably be<br>> method on ARMSubTarget, like the X86 backend does.<br>><br>> -Chris<br>><br>>> ---<br>>> Diffs of the changes:  (+6 -5)
<br>>><br>>>  ARMISelLowering.cpp |   11 ++++++-----<br>>>  1 files changed, 6 insertions(+), 5 deletions(-)<br>>><br>>><br>>> Index: llvm/lib/Target/ARM/ARMISelLowering.cpp<br>>> diff -u llvm/lib/Target/ARM/ARMISelLowering.cpp:
1.49 llvm/lib/<br>>> Target/ARM/ARMISelLowering.cpp:1.50<br>>> --- llvm/lib/Target/ARM/ARMISelLowering.cpp:1.49     Thu May  3<br>>> 15:28:35 2007<br>>> +++ llvm/lib/Target/ARM/ARMISelLowering.cpp  Thu May  3 19:26:58 2007
<br>>> @@ -812,10 +812,11 @@<br>>>  }<br>>><br>>>  /// GVIsIndirectSymbol - true if the GV will be accessed via an<br>>> indirect symbol<br>>> -/// even in dynamic-no-pic mode.<br>>> -static bool GVIsIndirectSymbol(GlobalValue *GV) {
<br>>> -  return (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() ||<br>>> -          (GV->isDeclaration() && !GV->hasNotBeenReadFromBytecode<br>>> ()));<br>>> +/// even in non-static mode.
<br>>> +static bool GVIsIndirectSymbol(GlobalValue *GV, Reloc::Model<br>>> RelocM) {<br>>> +  return RelocM != Reloc::Static &&<br>>> +    (GV->hasWeakLinkage() || GV->hasLinkOnceLinkage() ||
<br>>> +     (GV->isDeclaration() && !GV->hasNotBeenReadFromBytecode()));<br>>>  }<br>>><br>>>  SDOperand ARMTargetLowering::LowerGlobalAddressDarwin(SDOperand Op,<br>>> @@ -823,7 +824,7 @@
<br>>>    MVT::ValueType PtrVT = getPointerTy();<br>>>    GlobalValue *GV = cast<GlobalAddressSDNode>(Op)->getGlobal();<br>>>    Reloc::Model RelocM = getTargetMachine().getRelocationModel();<br>
>> -  bool IsIndirect = GVIsIndirectSymbol(GV);<br>>> +  bool IsIndirect = GVIsIndirectSymbol(GV, RelocM);<br>>>    SDOperand CPAddr;<br>>>    if (RelocM == Reloc::Static)<br>>>      CPAddr = 
DAG.getTargetConstantPool(GV, PtrVT, 2);<br>>><br>>><br>>><br>>> _______________________________________________<br>>> llvm-commits mailing list<br>>> <a href="mailto:llvm-commits@cs.uiuc.edu">
llvm-commits@cs.uiuc.edu</a><br>>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>><br>> _______________________________________________
<br>> llvm-commits mailing list<br>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
</a><br><br></blockquote></div><br>