WeakLinkage, ///< Keep one copy of named function when linking (weak)
AppendingLinkage, ///< Special purpose, only applies to global arrays
InternalLinkage, ///< Rename collisions when linking (static functions)
+ PrivateLinkage, ///< Like Internal, but omit from symbol table
DLLImportLinkage, ///< Function to be imported from DLL
DLLExportLinkage, ///< Function to be accessible from DLL
ExternalWeakLinkage,///< ExternalWeak linkage description
bool hasCommonLinkage() const { return Linkage == CommonLinkage; }
bool hasAppendingLinkage() const { return Linkage == AppendingLinkage; }
bool hasInternalLinkage() const { return Linkage == InternalLinkage; }
+ bool hasPrivateLinkage() const { return Linkage == PrivateLinkage; }
+ bool hasLocalLinkage() const {
+ return Linkage == InternalLinkage || Linkage == PrivateLinkage;
+ }
bool hasDLLImportLinkage() const { return Linkage == DLLImportLinkage; }
bool hasDLLExportLinkage() const { return Linkage == DLLExportLinkage; }
bool hasExternalWeakLinkage() const { return Linkage == ExternalWeakLinkage; }
void setLinkage(LinkageTypes LT) { Linkage = LT; }
LinkageTypes getLinkage() const { return Linkage; }
- /// isWeakForLinker - Determines if symbol is weak for linker having weak or
- /// linkonce or common or extweak LLVM linkage.
- bool isWeakForLinker() const {
+ /// mayBeOverridden - Whether the definition of this global may be replaced
+ /// at link time. For example, if a function has weak linkage then the code
+ /// defining it may be replaced by different code.
+ bool mayBeOverridden() const {
return (Linkage == WeakLinkage ||
Linkage == LinkOnceLinkage ||
Linkage == CommonLinkage ||