Add static methods to handle Linkage Types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97871 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2010-03-06 07:22:39 +00:00
parent eea3f7e4ee
commit 44f1680cdf

View File

@ -110,36 +110,51 @@ public:
return ODR ? WeakODRLinkage : WeakAnyLinkage; return ODR ? WeakODRLinkage : WeakAnyLinkage;
} }
bool hasExternalLinkage() const { return Linkage == ExternalLinkage; } static bool isExternalLinkage(LinkageTypes Linkage) {
bool hasAvailableExternallyLinkage() const { return Linkage == ExternalLinkage;
}
static bool isAvailableExternallyLinkage(LinkageTypes Linkage) {
return Linkage == AvailableExternallyLinkage; return Linkage == AvailableExternallyLinkage;
} }
bool hasLinkOnceLinkage() const { static bool isLinkOnceLinkage(LinkageTypes Linkage) {
return Linkage == LinkOnceAnyLinkage || Linkage == LinkOnceODRLinkage; return Linkage == LinkOnceAnyLinkage || Linkage == LinkOnceODRLinkage;
} }
bool hasWeakLinkage() const { static bool isWeakLinkage(LinkageTypes Linkage) {
return Linkage == WeakAnyLinkage || Linkage == WeakODRLinkage; return Linkage == WeakAnyLinkage || Linkage == WeakODRLinkage;
} }
bool hasAppendingLinkage() const { return Linkage == AppendingLinkage; } static bool isAppendingLinkage(LinkageTypes Linkage) {
bool hasInternalLinkage() const { return Linkage == InternalLinkage; } return Linkage == AppendingLinkage;
bool hasPrivateLinkage() const { return Linkage == PrivateLinkage; } }
bool hasLinkerPrivateLinkage() const { return Linkage==LinkerPrivateLinkage; } static bool isInternalLinkage(LinkageTypes Linkage) {
bool hasLocalLinkage() const { return Linkage == InternalLinkage;
return hasInternalLinkage() || hasPrivateLinkage() || }
hasLinkerPrivateLinkage(); static bool isPrivateLinkage(LinkageTypes Linkage) {
return Linkage == PrivateLinkage;
}
static bool isLinkerPrivateLinkage(LinkageTypes Linkage) {
return Linkage==LinkerPrivateLinkage;
}
static bool isLocalLinkage(LinkageTypes Linkage) {
return isInternalLinkage(Linkage) || isPrivateLinkage(Linkage) ||
isLinkerPrivateLinkage(Linkage);
}
static bool isDLLImportLinkage(LinkageTypes Linkage) {
return Linkage == DLLImportLinkage;
}
static bool isDLLExportLinkage(LinkageTypes Linkage) {
return Linkage == DLLExportLinkage;
}
static bool isExternalWeakLinkage(LinkageTypes Linkage) {
return Linkage == ExternalWeakLinkage;
}
static bool isCommonLinkage(LinkageTypes Linkage) {
return Linkage == CommonLinkage;
} }
bool hasDLLImportLinkage() const { return Linkage == DLLImportLinkage; }
bool hasDLLExportLinkage() const { return Linkage == DLLExportLinkage; }
bool hasExternalWeakLinkage() const { return Linkage == ExternalWeakLinkage; }
bool hasCommonLinkage() const { return Linkage == CommonLinkage; }
void setLinkage(LinkageTypes LT) { Linkage = LT; }
LinkageTypes getLinkage() const { return Linkage; }
/// mayBeOverridden - Whether the definition of this global may be replaced /// mayBeOverridden - Whether the definition of this global may be replaced
/// by something non-equivalent at link time. For example, if a function has /// by something non-equivalent at link time. For example, if a function has
/// weak linkage then the code defining it may be replaced by different code. /// weak linkage then the code defining it may be replaced by different code.
bool mayBeOverridden() const { static bool mayBeOverridden(LinkageTypes Linkage) {
return (Linkage == WeakAnyLinkage || return (Linkage == WeakAnyLinkage ||
Linkage == LinkOnceAnyLinkage || Linkage == LinkOnceAnyLinkage ||
Linkage == CommonLinkage || Linkage == CommonLinkage ||
@ -148,7 +163,7 @@ public:
/// isWeakForLinker - Whether the definition of this global may be replaced at /// isWeakForLinker - Whether the definition of this global may be replaced at
/// link time. /// link time.
bool isWeakForLinker() const { static bool isWeakForLinker(LinkageTypes Linkage) {
return (Linkage == AvailableExternallyLinkage || return (Linkage == AvailableExternallyLinkage ||
Linkage == WeakAnyLinkage || Linkage == WeakAnyLinkage ||
Linkage == WeakODRLinkage || Linkage == WeakODRLinkage ||
@ -158,6 +173,33 @@ public:
Linkage == ExternalWeakLinkage); Linkage == ExternalWeakLinkage);
} }
bool hasExternalLinkage() const { return isExternalLinkage(Linkage); }
bool hasAvailableExternallyLinkage() const {
return isAvailableExternallyLinkage(Linkage);
}
bool hasLinkOnceLinkage() const {
return isLinkOnceLinkage(Linkage);
}
bool hasWeakLinkage() const {
return isWeakLinkage(Linkage);
}
bool hasAppendingLinkage() const { return isAppendingLinkage(Linkage); }
bool hasInternalLinkage() const { return isInternalLinkage(Linkage); }
bool hasPrivateLinkage() const { return isPrivateLinkage(Linkage); }
bool hasLinkerPrivateLinkage() const { return isLinkerPrivateLinkage(Linkage); }
bool hasLocalLinkage() const { return isLocalLinkage(Linkage); }
bool hasDLLImportLinkage() const { return isDLLImportLinkage(Linkage); }
bool hasDLLExportLinkage() const { return isDLLExportLinkage(Linkage); }
bool hasExternalWeakLinkage() const { return isExternalWeakLinkage(Linkage); }
bool hasCommonLinkage() const { return isCommonLinkage(Linkage); }
void setLinkage(LinkageTypes LT) { Linkage = LT; }
LinkageTypes getLinkage() const { return Linkage; }
bool mayBeOverridden() const { return mayBeOverridden(Linkage); }
bool isWeakForLinker() const { return isWeakForLinker(Linkage); }
/// copyAttributesFrom - copy all additional attributes (those not needed to /// copyAttributesFrom - copy all additional attributes (those not needed to
/// create a GlobalValue) from the GlobalValue Src to this one. /// create a GlobalValue) from the GlobalValue Src to this one.
virtual void copyAttributesFrom(const GlobalValue *Src); virtual void copyAttributesFrom(const GlobalValue *Src);