diff options
-rw-r--r-- | docs/LangRef.html | 12 | ||||
-rw-r--r-- | include/llvm-c/Core.h | 4 | ||||
-rw-r--r-- | include/llvm/GlobalValue.h | 16 | ||||
-rw-r--r-- | lib/AsmParser/LLLexer.cpp | 1 | ||||
-rw-r--r-- | lib/AsmParser/LLParser.cpp | 20 | ||||
-rw-r--r-- | lib/AsmParser/LLToken.h | 2 | ||||
-rw-r--r-- | lib/Bitcode/Reader/BitcodeReader.cpp | 3 | ||||
-rw-r--r-- | lib/Bitcode/Writer/BitcodeWriter.cpp | 3 | ||||
-rw-r--r-- | lib/Target/CppBackend/CPPBackend.cpp | 6 | ||||
-rw-r--r-- | lib/Target/XCore/XCoreAsmPrinter.cpp | 3 | ||||
-rw-r--r-- | lib/VMCore/AsmWriter.cpp | 3 | ||||
-rw-r--r-- | utils/llvm.grm | 2 | ||||
-rw-r--r-- | utils/vim/llvm.vim | 2 |
13 files changed, 25 insertions, 52 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index 6b7038dbcc..c698e8a90a 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -554,15 +554,13 @@ All Global Variables and Functions have one of the following types of linkage: <dt><tt><b><a name="linkage_linkonce">linkonce_odr</a></b></tt>: </dt> <dt><tt><b><a name="linkage_common">common_odr</a></b></tt>: </dt> <dt><tt><b><a name="linkage_weak">weak_odr</a></b></tt>: </dt> - <dt><tt><b><a name="linkage_externweak">extern_weak_odr</a></b></tt>: </dt> <dd>Some languages allow inequivalent globals to be merged, such as two functions with different semantics. Other languages, such as <tt>C++</tt>, ensure that only equivalent globals are ever merged (the "one definition rule" - <tt>odr</tt>). Such languages can use the <tt>linkonce_odr</tt>, - <tt>common_odr</tt>, <tt>weak_odr</tt> and <tt>extern_weak_odr</tt> linkage - types to indicate that the global will only be merged with equivalent - globals. These linkage types are otherwise the same as their - non-<tt>odr</tt> versions. + <tt>common_odr</tt> and <tt>weak_odr</tt> linkage types to indicate that + the global will only be merged with equivalent globals. These linkage + types are otherwise the same as their non-<tt>odr</tt> versions. </dd> <dt><tt><b><a name="linkage_external">externally visible</a></b></tt>:</dt> @@ -606,8 +604,8 @@ preventing a collision. Since "<tt>main</tt>" and "<tt>puts</tt>" are external (i.e., lacking any linkage declarations), they are accessible outside of the current module.</p> <p>It is illegal for a function <i>declaration</i> -to have any linkage type other than "externally visible", <tt>dllimport</tt>, -<tt>extern_weak</tt> or <tt>extern_weak_odr</tt>.</p> +to have any linkage type other than "externally visible", <tt>dllimport</tt> +or <tt>extern_weak</tt>.</p> <p>Aliases can have only <tt>external</tt>, <tt>internal</tt>, <tt>weak</tt> or <tt>weak_odr</tt> linkages.</p> </div> diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 5d8cff414f..34a91fa10f 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -127,9 +127,7 @@ typedef enum { LLVMPrivateLinkage, /**< Like Internal, but omit from symbol table */ LLVMDLLImportLinkage, /**< Function to be imported from DLL */ LLVMDLLExportLinkage, /**< Function to be accessible from DLL */ - LLVMExternalWeakAnyLinkage,/**< ExternalWeak linkage description */ - LLVMExternalWeakODRLinkage,/**< Same, but only replaced by something - equivalent. */ + LLVMExternalWeakLinkage,/**< ExternalWeak linkage description */ LLVMGhostLinkage, /**< Stand-in functions for streaming fns from bitcode */ LLVMCommonAnyLinkage, /**< Tentative definitions */ diff --git a/include/llvm/GlobalValue.h b/include/llvm/GlobalValue.h index 45528b2713..7b1bfc0494 100644 --- a/include/llvm/GlobalValue.h +++ b/include/llvm/GlobalValue.h @@ -40,8 +40,7 @@ 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. @@ -112,9 +111,6 @@ public: 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 hasLinkOnceLinkage() const { @@ -131,10 +127,7 @@ 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; @@ -150,7 +143,7 @@ public: return (Linkage == WeakAnyLinkage || Linkage == LinkOnceAnyLinkage || Linkage == CommonAnyLinkage || - Linkage == ExternalWeakAnyLinkage); + Linkage == ExternalWeakLinkage); } /// isWeakForLinker - Whether the definition of this global may be replaced at @@ -162,8 +155,7 @@ public: Linkage == LinkOnceODRLinkage || Linkage == CommonAnyLinkage || Linkage == CommonODRLinkage || - Linkage == ExternalWeakAnyLinkage || - Linkage == ExternalWeakODRLinkage); + Linkage == ExternalWeakLinkage); } /// copyAttributesFrom - copy all additional attributes (those not needed to diff --git a/lib/AsmParser/LLLexer.cpp b/lib/AsmParser/LLLexer.cpp index 6f1d5eefe8..d25b00153c 100644 --- a/lib/AsmParser/LLLexer.cpp +++ b/lib/AsmParser/LLLexer.cpp @@ -468,7 +468,6 @@ lltok::Kind LLLexer::LexIdentifier() { KEYWORD(hidden); KEYWORD(protected); KEYWORD(extern_weak); - KEYWORD(extern_weak_odr); KEYWORD(external); KEYWORD(thread_local); KEYWORD(zeroinitializer); diff --git a/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp index cb9eb6ad9a..c13c7fce14 100644 --- a/lib/AsmParser/LLParser.cpp +++ b/lib/AsmParser/LLParser.cpp @@ -125,7 +125,6 @@ bool LLParser::ParseTopLevelEntities() { case lltok::kw_common_odr: // OptionalLinkage case lltok::kw_dllimport: // OptionalLinkage case lltok::kw_extern_weak: // OptionalLinkage - case lltok::kw_extern_weak_odr: // OptionalLinkage case lltok::kw_external: { // OptionalLinkage unsigned Linkage, Visibility; if (ParseOptionalLinkage(Linkage) || @@ -458,8 +457,7 @@ bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc, // present. Constant *Init = 0; if (!HasLinkage || (Linkage != GlobalValue::DLLImportLinkage && - Linkage != GlobalValue::ExternalWeakAnyLinkage && - Linkage != GlobalValue::ExternalWeakODRLinkage && + Linkage != GlobalValue::ExternalWeakLinkage && Linkage != GlobalValue::ExternalLinkage)) { if (ParseGlobalValue(Ty, Init)) return true; @@ -574,10 +572,10 @@ GlobalValue *LLParser::GetGlobalVal(const std::string &Name, const Type *Ty, return 0; } - FwdVal = Function::Create(FT, GlobalValue::ExternalWeakAnyLinkage, Name, M); + FwdVal = Function::Create(FT, GlobalValue::ExternalWeakLinkage, Name, M); } else { FwdVal = new GlobalVariable(PTy->getElementType(), false, - GlobalValue::ExternalWeakAnyLinkage, 0, Name, M); + GlobalValue::ExternalWeakLinkage, 0, Name, M); } ForwardRefVals[Name] = std::make_pair(FwdVal, Loc); @@ -618,10 +616,10 @@ GlobalValue *LLParser::GetGlobalVal(unsigned ID, const Type *Ty, LocTy Loc) { Error(Loc, "function may not return opaque type"); return 0; } - FwdVal = Function::Create(FT, GlobalValue::ExternalWeakAnyLinkage, "", M); + FwdVal = Function::Create(FT, GlobalValue::ExternalWeakLinkage, "", M); } else { FwdVal = new GlobalVariable(PTy->getElementType(), false, - GlobalValue::ExternalWeakAnyLinkage, 0, "", M); + GlobalValue::ExternalWeakLinkage, 0, "", M); } ForwardRefValIDs[ID] = std::make_pair(FwdVal, Loc); @@ -753,7 +751,6 @@ bool LLParser::ParseOptionalAttrs(unsigned &Attrs, unsigned AttrKind) { /// ::= 'common_odr' /// ::= 'dllimport' /// ::= 'extern_weak' -/// ::= 'extern_weak_odr' /// ::= 'external' bool LLParser::ParseOptionalLinkage(unsigned &Res, bool &HasLinkage) { HasLinkage = false; @@ -770,9 +767,7 @@ bool LLParser::ParseOptionalLinkage(unsigned &Res, bool &HasLinkage) { case lltok::kw_common: Res = GlobalValue::CommonAnyLinkage; break; case lltok::kw_common_odr: Res = GlobalValue::CommonODRLinkage; break; case lltok::kw_dllimport: Res = GlobalValue::DLLImportLinkage; break; - case lltok::kw_extern_weak: Res = GlobalValue::ExternalWeakAnyLinkage; break; - case lltok::kw_extern_weak_odr: - Res = GlobalValue::ExternalWeakODRLinkage; break; + case lltok::kw_extern_weak: Res = GlobalValue::ExternalWeakLinkage; break; case lltok::kw_external: Res = GlobalValue::ExternalLinkage; break; } Lex.Lex(); @@ -2103,8 +2098,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) { case GlobalValue::ExternalLinkage: break; // always ok. case GlobalValue::DLLImportLinkage: - case GlobalValue::ExternalWeakAnyLinkage: - case GlobalValue::ExternalWeakODRLinkage: + case GlobalValue::ExternalWeakLinkage: if (isDefine) return Error(LinkageLoc, "invalid linkage for function definition"); break; diff --git a/lib/AsmParser/LLToken.h b/lib/AsmParser/LLToken.h index efdc77af81..35a1bc345b 100644 --- a/lib/AsmParser/LLToken.h +++ b/lib/AsmParser/LLToken.h @@ -39,7 +39,7 @@ namespace lltok { kw_private, kw_internal, kw_linkonce, kw_linkonce_odr, kw_weak, kw_weak_odr, kw_appending, kw_dllimport, kw_dllexport, kw_common, kw_common_odr, kw_default, kw_hidden, kw_protected, - kw_extern_weak, kw_extern_weak_odr, + kw_extern_weak, kw_external, kw_thread_local, kw_zeroinitializer, kw_undef, kw_null, diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index 0fe6fc682c..abf1db23a3 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -65,12 +65,11 @@ static GlobalValue::LinkageTypes GetDecodedLinkage(unsigned Val) { case 4: return GlobalValue::LinkOnceAnyLinkage; case 5: return GlobalValue::DLLImportLinkage; case 6: return GlobalValue::DLLExportLinkage; - case 7: return GlobalValue::ExternalWeakAnyLinkage; + case 7: return GlobalValue::ExternalWeakLinkage; case 8: return GlobalValue::CommonAnyLinkage; case 9: return GlobalValue::PrivateLinkage; case 10: return GlobalValue::WeakODRLinkage; case 11: return GlobalValue::LinkOnceODRLinkage; - case 12: return GlobalValue::ExternalWeakODRLinkage; case 13: return GlobalValue::CommonODRLinkage; } } diff --git a/lib/Bitcode/Writer/BitcodeWriter.cpp b/lib/Bitcode/Writer/BitcodeWriter.cpp index fefffbedb6..940647fb54 100644 --- a/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -282,12 +282,11 @@ static unsigned getEncodedLinkage(const GlobalValue *GV) { case GlobalValue::LinkOnceAnyLinkage: return 4; case GlobalValue::DLLImportLinkage: return 5; case GlobalValue::DLLExportLinkage: return 6; - case GlobalValue::ExternalWeakAnyLinkage: return 7; + case GlobalValue::ExternalWeakLinkage: return 7; case GlobalValue::CommonAnyLinkage: return 8; case GlobalValue::PrivateLinkage: return 9; case GlobalValue::WeakODRLinkage: return 10; case GlobalValue::LinkOnceODRLinkage: return 11; - case GlobalValue::ExternalWeakODRLinkage: return 12; case GlobalValue::CommonODRLinkage: return 13; } } diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp index 48cf4959e0..52646f0ce3 100644 --- a/lib/Target/CppBackend/CPPBackend.cpp +++ b/lib/Target/CppBackend/CPPBackend.cpp @@ -310,10 +310,8 @@ namespace { Out << "GlobalValue::DLLImportLinkage"; break; case GlobalValue::DLLExportLinkage: Out << "GlobalValue::DLLExportLinkage"; break; - case GlobalValue::ExternalWeakAnyLinkage: - Out << "GlobalValue::ExternalWeakAnyLinkage"; break; - case GlobalValue::ExternalWeakODRLinkage: - Out << "GlobalValue::ExternalWeakODRLinkage"; break; + case GlobalValue::ExternalWeakLinkage: + Out << "GlobalValue::ExternalWeakLinkage"; break; case GlobalValue::GhostLinkage: Out << "GlobalValue::GhostLinkage"; break; case GlobalValue::CommonAnyLinkage: diff --git a/lib/Target/XCore/XCoreAsmPrinter.cpp b/lib/Target/XCore/XCoreAsmPrinter.cpp index 6026e126d1..67121a7b94 100644 --- a/lib/Target/XCore/XCoreAsmPrinter.cpp +++ b/lib/Target/XCore/XCoreAsmPrinter.cpp @@ -438,8 +438,7 @@ bool XCoreAsmPrinter::doInitialization(Module &M) { switch (I->getLinkage()) { default: assert(0 && "Unexpected linkage"); - case Function::ExternalWeakAnyLinkage: - case Function::ExternalWeakODRLinkage: + case Function::ExternalWeakLinkage: ExtWeakSymbols.insert(I); // fallthrough case Function::ExternalLinkage: diff --git a/lib/VMCore/AsmWriter.cpp b/lib/VMCore/AsmWriter.cpp index 12a8ed6c22..b72defb08a 100644 --- a/lib/VMCore/AsmWriter.cpp +++ b/lib/VMCore/AsmWriter.cpp @@ -1194,8 +1194,7 @@ static void PrintLinkage(GlobalValue::LinkageTypes LT, raw_ostream &Out) { case GlobalValue::AppendingLinkage: Out << "appending "; break; case GlobalValue::DLLImportLinkage: Out << "dllimport "; break; case GlobalValue::DLLExportLinkage: Out << "dllexport "; break; - case GlobalValue::ExternalWeakAnyLinkage: Out << "extern_weak "; break; - case GlobalValue::ExternalWeakODRLinkage: Out << "extern_weak_odr "; break; + case GlobalValue::ExternalWeakLinkage: Out << "extern_weak "; break; case GlobalValue::ExternalLinkage: break; case GlobalValue::GhostLinkage: Out << "GhostLinkage not allowed in AsmWriter!\n"; diff --git a/utils/llvm.grm b/utils/llvm.grm index 641ba01f20..639d86213b 100644 --- a/utils/llvm.grm +++ b/utils/llvm.grm @@ -94,7 +94,6 @@ GVInternalLinkage GVExternalLinkage ::= dllimport | "extern_weak" - | "extern_weak_odr" | + external ; @@ -109,7 +108,6 @@ FunctionDeclareLinkage ::= + _ | dllimport | "extern_weak" - | "extern_weak_odr" ; FunctionDefineLinkage diff --git a/utils/vim/llvm.vim b/utils/vim/llvm.vim index 89787f8056..7d56a4e56a 100644 --- a/utils/vim/llvm.vim +++ b/utils/vim/llvm.vim @@ -41,7 +41,7 @@ syn keyword llvmStatement extractvalue insertvalue syn keyword llvmKeyword define declare global constant syn keyword llvmKeyword internal external syn keyword llvmKeyword linkonce linkonce_odr weak weak_odr appending -syn keyword llvmKeyword common common_odr extern_weak extern_weak_odr +syn keyword llvmKeyword common common_odr extern_weak syn keyword llvmKeyword thread_local dllimport dllexport syn keyword llvmKeyword hidden protected default syn keyword llvmKeyword except deplibs |