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>