X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FGlobalValue.h;h=0df7ababed70ee4441a4565df0a5a35a65f7b0a7;hb=ab9238e876dcf6da101d8ae626925bcd9e537a7e;hp=45528b2713f23a69e9156dc1b8f7f2257b52c6fd;hpb=319e63234a32b502919874042712cd0457876d59;p=oota-llvm.git diff --git a/include/llvm/GlobalValue.h b/include/llvm/GlobalValue.h index 45528b2713f..0df7ababed7 100644 --- a/include/llvm/GlobalValue.h +++ b/include/llvm/GlobalValue.h @@ -31,6 +31,7 @@ public: /// @brief An enumeration for the kinds of linkage for global values. enum LinkageTypes { ExternalLinkage = 0,///< 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) @@ -40,11 +41,9 @@ public: PrivateLinkage, ///< Like Internal, but omit from symbol table DLLImportLinkage, ///< Function to be imported from DLL DLLExportLinkage, ///< Function to be accessible from DLL - ExternalWeakAnyLinkage,///< ExternalWeak linkage description - ExternalWeakODRLinkage,///< Same, but only replaced by something equivalent. + ExternalWeakLinkage,///< ExternalWeak linkage description GhostLinkage, ///< Stand-in functions for streaming fns from BC files - CommonAnyLinkage, ///< Tentative definitions - CommonODRLinkage ///< Same, but only replaced by something equivalent. + CommonLinkage ///< Tentative definitions }; /// @brief An enumeration for the kinds of visibility of global values. @@ -81,6 +80,7 @@ public: } VisibilityTypes getVisibility() const { return VisibilityTypes(Visibility); } + bool hasDefaultVisibility() const { return Visibility == DefaultVisibility; } bool hasHiddenVisibility() const { return Visibility == HiddenVisibility; } bool hasProtectedVisibility() const { return Visibility == ProtectedVisibility; @@ -109,14 +109,11 @@ public: static LinkageTypes getWeakLinkage(bool ODR) { return ODR ? WeakODRLinkage : WeakAnyLinkage; } - static LinkageTypes getCommonLinkage(bool ODR) { - return ODR ? CommonODRLinkage : CommonAnyLinkage; - } - static LinkageTypes getExternalWeakLinkage(bool ODR) { - return ODR ? ExternalWeakODRLinkage : ExternalWeakAnyLinkage; - } bool hasExternalLinkage() const { return Linkage == ExternalLinkage; } + bool hasAvailableExternallyLinkage() const { + return Linkage == AvailableExternallyLinkage; + } bool hasLinkOnceLinkage() const { return Linkage == LinkOnceAnyLinkage || Linkage == LinkOnceODRLinkage; } @@ -131,14 +128,9 @@ public: } bool hasDLLImportLinkage() const { return Linkage == DLLImportLinkage; } bool hasDLLExportLinkage() const { return Linkage == DLLExportLinkage; } - bool hasExternalWeakLinkage() const { - return Linkage == ExternalWeakAnyLinkage || - Linkage == ExternalWeakODRLinkage; - } + bool hasExternalWeakLinkage() const { return Linkage == ExternalWeakLinkage; } bool hasGhostLinkage() const { return Linkage == GhostLinkage; } - bool hasCommonLinkage() const { - return Linkage == CommonAnyLinkage || Linkage == CommonODRLinkage; - } + bool hasCommonLinkage() const { return Linkage == CommonLinkage; } void setLinkage(LinkageTypes LT) { Linkage = LT; } LinkageTypes getLinkage() const { return Linkage; } @@ -149,21 +141,20 @@ public: bool mayBeOverridden() const { return (Linkage == WeakAnyLinkage || Linkage == LinkOnceAnyLinkage || - Linkage == CommonAnyLinkage || - Linkage == ExternalWeakAnyLinkage); + Linkage == CommonLinkage || + Linkage == ExternalWeakLinkage); } /// isWeakForLinker - Whether the definition of this global may be replaced at - /// link time, whether the replacement is equivalent to the original or not. + /// link time. bool isWeakForLinker() const { - return (Linkage == WeakAnyLinkage || + return (Linkage == AvailableExternallyLinkage || + Linkage == WeakAnyLinkage || Linkage == WeakODRLinkage || Linkage == LinkOnceAnyLinkage || Linkage == LinkOnceODRLinkage || - Linkage == CommonAnyLinkage || - Linkage == CommonODRLinkage || - Linkage == ExternalWeakAnyLinkage || - Linkage == ExternalWeakODRLinkage); + Linkage == CommonLinkage || + Linkage == ExternalWeakLinkage); } /// copyAttributesFrom - copy all additional attributes (those not needed to