[LLVMdev] LLVM linkage flags

Dave Bozier seifsta at gmail.com
Fri Jul 24 11:28:13 PDT 2015


It's no longer a tentative definition because you have initialized it.
Doesn't matter what it has been initialized to i don't think...

On Fri, Jul 24, 2015 at 6:24 PM, Max Ruttenberg
<mruttenberg at emutechnology.com> wrote:
> An enumeration for the kinds of linkage for global values.
>
> Hi, I'm currently writing a compiler that takes llvm-ir input. I'm a little
> confused by the following linkage flags:
>
>> Enumerator:
>>
>> ExternalLinkage: Externally visible function
>>
>> AvailableExternallyLinkage: Available for inspection, not emission.
>>
>> LinkOnceAnyLinkage: Keep one copy of function when linking (inline)
>>
>> LinkOnceODRLinkage: Same, but only replaced by something equivalent.
>>
>> WeakAnyLinkage: Keep one copy of named function when linking (weak)
>>
>> WeakODRLinkage: Same, but only replaced by something equivalent.
>>
>> AppendingLinkage: Special purpose, only applies to global arrays.
>>
>> InternalLinkage: Rename collisions when linking (static functions).
>>
>> PrivateLinkage: Like Internal, but omit from symbol table.
>>
>> ExternalWeakLinkage: ExternalWeak linkage description.
>>
>> CommonLinkage: Tentative definitions.
>
>
> When I have source code like:
>
> int x = 0;
> int main(){...}
>
> I end up with an ExternalLinkage flag on x. Why would this not have
> CommonLinkage? When I have the same code as above and don't initialize x,
> I end up with the CommonLinkage flag.
>
> Any insight would be appreciated.
>
> Best,
> M.R.
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>



More information about the llvm-dev mailing list