It makes no sense to have a ODR version of common
authorDuncan Sands <baldrick@free.fr>
Wed, 11 Mar 2009 20:14:15 +0000 (20:14 +0000)
committerDuncan Sands <baldrick@free.fr>
Wed, 11 Mar 2009 20:14:15 +0000 (20:14 +0000)
linkage, so remove it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66690 91177308-0d34-0410-b5e6-96231b3b80d8

22 files changed:
docs/LangRef.html
include/llvm-c/Core.h
include/llvm/GlobalValue.h
lib/AsmParser/LLLexer.cpp
lib/AsmParser/LLParser.cpp
lib/AsmParser/LLToken.h
lib/Bitcode/Reader/BitcodeReader.cpp
lib/Bitcode/Writer/BitcodeWriter.cpp
lib/CodeGen/MachOWriter.cpp
lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
lib/Target/CppBackend/CPPBackend.cpp
lib/Target/IA64/IA64AsmPrinter.cpp
lib/Target/Mips/MipsAsmPrinter.cpp
lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
lib/VMCore/AsmWriter.cpp
utils/llvm.grm
utils/vim/llvm.vim

index c698e8a90a9d07b9193ae55ea83eff1aea434e5b..94f3c3d75a89c02a235a2c68eaaaceee5df687f7 100644 (file)
@@ -552,15 +552,14 @@ All Global Variables and Functions have one of the following types of linkage:
   </dd>
 
   <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>
   <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> 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.
+    rule" - <tt>odr</tt>).  Such languages can use the <tt>linkonce_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>
index 34a91fa10fb8a940ee76af92e0451ca5178fe0d1..91b3bdfd74e82e8c914137a918a3116ad080862f 100644 (file)
@@ -130,9 +130,7 @@ typedef enum {
   LLVMExternalWeakLinkage,/**< ExternalWeak linkage description */
   LLVMGhostLinkage,       /**< Stand-in functions for streaming fns from
                                bitcode */
-  LLVMCommonAnyLinkage,   /**< Tentative definitions */
-  LLVMCommonODRLinkage    /**< Same, but only replaced by something
-                            equivalent. */
+  LLVMCommonLinkage       /**< Tentative definitions */
 } LLVMLinkage;
 
 typedef enum {
index 7b1bfc0494b9bf7092d55aa40bfd210f62fcbe85..e6a82ef22e9735426e7aff4cc57a498b8c6804c9 100644 (file)
@@ -42,8 +42,7 @@ public:
     DLLExportLinkage,   ///< Function to be accessible from DLL
     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.
@@ -108,9 +107,6 @@ public:
   static LinkageTypes getWeakLinkage(bool ODR) {
     return ODR ? WeakODRLinkage : WeakAnyLinkage;
   }
-  static LinkageTypes getCommonLinkage(bool ODR) {
-    return ODR ? CommonODRLinkage : CommonAnyLinkage;
-  }
 
   bool hasExternalLinkage() const { return Linkage == ExternalLinkage; }
   bool hasLinkOnceLinkage() const {
@@ -129,9 +125,7 @@ public:
   bool hasDLLExportLinkage() const { return Linkage == DLLExportLinkage; }
   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; }
@@ -142,7 +136,7 @@ public:
   bool mayBeOverridden() const {
     return (Linkage == WeakAnyLinkage ||
             Linkage == LinkOnceAnyLinkage ||
-            Linkage == CommonAnyLinkage ||
+            Linkage == CommonLinkage ||
             Linkage == ExternalWeakLinkage);
   }
 
@@ -153,8 +147,7 @@ public:
             Linkage == WeakODRLinkage ||
             Linkage == LinkOnceAnyLinkage ||
             Linkage == LinkOnceODRLinkage ||
-            Linkage == CommonAnyLinkage ||
-            Linkage == CommonODRLinkage ||
+            Linkage == CommonLinkage ||
             Linkage == ExternalWeakLinkage);
   }
 
index d25b00153c0a1f651ac50ba73f47a71aac1c34bb..5a38e6090f7410b64e8e79a99897d72bcb8de1ca 100644 (file)
@@ -463,7 +463,6 @@ lltok::Kind LLLexer::LexIdentifier() {
   KEYWORD(dllimport);
   KEYWORD(dllexport);
   KEYWORD(common);
-  KEYWORD(common_odr);
   KEYWORD(default);
   KEYWORD(hidden);
   KEYWORD(protected);
index c13c7fce145e799d7c6169737a3751bef74e8a55..9d0f24cda9385e3b8140901571f662807e539a19 100644 (file)
@@ -122,7 +122,6 @@ bool LLParser::ParseTopLevelEntities() {
     case lltok::kw_appending:     // OptionalLinkage
     case lltok::kw_dllexport:     // OptionalLinkage
     case lltok::kw_common:        // OptionalLinkage
-    case lltok::kw_common_odr:    // OptionalLinkage
     case lltok::kw_dllimport:     // OptionalLinkage
     case lltok::kw_extern_weak:   // OptionalLinkage
     case lltok::kw_external: {    // OptionalLinkage
@@ -748,7 +747,6 @@ bool LLParser::ParseOptionalAttrs(unsigned &Attrs, unsigned AttrKind) {
 ///   ::= 'appending'
 ///   ::= 'dllexport'
 ///   ::= 'common'
-///   ::= 'common_odr'
 ///   ::= 'dllimport'
 ///   ::= 'extern_weak'
 ///   ::= 'external'
@@ -764,8 +762,7 @@ bool LLParser::ParseOptionalLinkage(unsigned &Res, bool &HasLinkage) {
   case lltok::kw_linkonce_odr: Res = GlobalValue::LinkOnceODRLinkage; break;
   case lltok::kw_appending:    Res = GlobalValue::AppendingLinkage; break;
   case lltok::kw_dllexport:    Res = GlobalValue::DLLExportLinkage; break;
-  case lltok::kw_common:       Res = GlobalValue::CommonAnyLinkage; break;
-  case lltok::kw_common_odr:   Res = GlobalValue::CommonODRLinkage; break;
+  case lltok::kw_common:       Res = GlobalValue::CommonLinkage; break;
   case lltok::kw_dllimport:    Res = GlobalValue::DLLImportLinkage; break;
   case lltok::kw_extern_weak:  Res = GlobalValue::ExternalWeakLinkage; break;
   case lltok::kw_external:     Res = GlobalValue::ExternalLinkage; break;
@@ -2114,8 +2111,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) {
     break;
   case GlobalValue::AppendingLinkage:
   case GlobalValue::GhostLinkage:
-  case GlobalValue::CommonAnyLinkage:
-  case GlobalValue::CommonODRLinkage:
+  case GlobalValue::CommonLinkage:
     return Error(LinkageLoc, "invalid function linkage type");
   }
   
index 35a1bc345b024db630efae78ae6e7f07953f8f4e..ec3769bdd09424b9d3ddb0aa5321945377aa387f 100644 (file)
@@ -37,7 +37,7 @@ namespace lltok {
     kw_global,  kw_constant,
 
     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_appending, kw_dllimport, kw_dllexport, kw_common,
     kw_default, kw_hidden, kw_protected,
     kw_extern_weak,
     kw_external, kw_thread_local,
index abf1db23a383cc03fc4a573aef3480be47004b50..299ce0b94a4a03a3e5de73515baed97bf5bd5610 100644 (file)
@@ -66,11 +66,10 @@ static GlobalValue::LinkageTypes GetDecodedLinkage(unsigned Val) {
   case 5: return GlobalValue::DLLImportLinkage;
   case 6: return GlobalValue::DLLExportLinkage;
   case 7: return GlobalValue::ExternalWeakLinkage;
-  case 8: return GlobalValue::CommonAnyLinkage;
+  case 8: return GlobalValue::CommonLinkage;
   case 9: return GlobalValue::PrivateLinkage;
   case 10: return GlobalValue::WeakODRLinkage;
   case 11: return GlobalValue::LinkOnceODRLinkage;
-  case 13: return GlobalValue::CommonODRLinkage;
   }
 }
 
index 940647fb54a9493ce236ee0a2599eb1622d1ccc1..1055564be2167e4c861997c4cf170a99ac52ff6b 100644 (file)
@@ -283,11 +283,10 @@ static unsigned getEncodedLinkage(const GlobalValue *GV) {
   case GlobalValue::DLLImportLinkage:    return 5;
   case GlobalValue::DLLExportLinkage:    return 6;
   case GlobalValue::ExternalWeakLinkage: return 7;
-  case GlobalValue::CommonAnyLinkage:    return 8;
+  case GlobalValue::CommonLinkage:       return 8;
   case GlobalValue::PrivateLinkage:      return 9;
   case GlobalValue::WeakODRLinkage:      return 10;
   case GlobalValue::LinkOnceODRLinkage:  return 11;
-  case GlobalValue::CommonODRLinkage:    return 13;
   }
 }
 
index 5fe05a4e8f0c90f9929de95f2bbc04af118caad3..d2e87917afb84725e8c2629c978b833975f1ed7a 100644 (file)
@@ -960,8 +960,7 @@ MachOSym::MachOSym(const GlobalValue *gv, std::string name, uint8_t sect,
   case GlobalValue::WeakODRLinkage:
   case GlobalValue::LinkOnceAnyLinkage:
   case GlobalValue::LinkOnceODRLinkage:
-  case GlobalValue::CommonAnyLinkage:
-  case GlobalValue::CommonODRLinkage:
+  case GlobalValue::CommonLinkage:
     assert(!isa<Function>(gv) && "Unexpected linkage type for Function!");
   case GlobalValue::ExternalLinkage:
     GVName = TAI->getGlobalPrefix() + name;
index ae968e7b098d9dd953823d7e2a7b174e9574c61b..816940b9e7636331c304f6f41b4c36f94a3f265d 100644 (file)
@@ -901,8 +901,7 @@ void ARMAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
 
   SwitchToSection(TAI->SectionForGlobal(GVar));
   switch (GVar->getLinkage()) {
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
    case GlobalValue::LinkOnceAnyLinkage:
    case GlobalValue::LinkOnceODRLinkage:
    case GlobalValue::WeakAnyLinkage:
index 5238b79d9d201f17d76e2e43bbda91cfa60cc0ac..a654be9849a9c3313f88dc6c8107ff0eb389f5fb 100644 (file)
@@ -237,8 +237,7 @@ void AlphaAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
    case GlobalValue::LinkOnceODRLinkage:
    case GlobalValue::WeakAnyLinkage:
    case GlobalValue::WeakODRLinkage:
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
     O << TAI->getWeakRefDirective() << name << '\n';
     break;
    case GlobalValue::AppendingLinkage:
index 7731a9023a104581f8956550d95dbdcf90c8d04f..9b6e5409192bb5f5d521a9f8aed4bcc93da719a2 100644 (file)
@@ -561,8 +561,7 @@ void LinuxAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
    case GlobalValue::LinkOnceODRLinkage:
    case GlobalValue::WeakAnyLinkage:
    case GlobalValue::WeakODRLinkage:
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
     O << "\t.global " << name << '\n'
       << "\t.type " << name << ", @object\n"
       << "\t.weak " << name << '\n';
index 52646f0ce3df355bc59273f41c7e176ce520e0d2..38134d9189b70080c82da92d066af2f0e48f1844 100644 (file)
@@ -314,10 +314,8 @@ namespace {
       Out << "GlobalValue::ExternalWeakLinkage"; break;
     case GlobalValue::GhostLinkage:
       Out << "GlobalValue::GhostLinkage"; break;
-    case GlobalValue::CommonAnyLinkage:
-      Out << "GlobalValue::CommonAnyLinkage"; break;
-    case GlobalValue::CommonODRLinkage:
-      Out << "GlobalValue::CommonODRLinkage"; break;
+    case GlobalValue::CommonLinkage:
+      Out << "GlobalValue::CommonLinkage"; break;
     }
   }
 
index d8ec2108c91419268b28a5a04b243477b66c7c92..2d4519abcf4b2268860cbe2f0f72e894d385ffbd 100644 (file)
@@ -298,8 +298,7 @@ void IA64AsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
   switch (GVar->getLinkage()) {
    case GlobalValue::LinkOnceAnyLinkage:
    case GlobalValue::LinkOnceODRLinkage:
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
    case GlobalValue::WeakAnyLinkage:
    case GlobalValue::WeakODRLinkage:
     // Nonnull linkonce -> weak
index a22d7d6ebcd6488eda767a63c72ad73a23c5d2a3..816e8dce6459ce9e9fc2c1f39c2d205688633aa8 100644 (file)
@@ -521,8 +521,7 @@ printModuleLevelGV(const GlobalVariable* GVar) {
   switch (GVar->getLinkage()) {
    case GlobalValue::LinkOnceAnyLinkage:
    case GlobalValue::LinkOnceODRLinkage:
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
    case GlobalValue::WeakAnyLinkage:
    case GlobalValue::WeakODRLinkage:
     // FIXME: Verify correct for weak.
index 4da53774d72b546b612eb1e35592ea2239cf10b8..3de290f1a8da84e454271e6a401443989ddc408b 100644 (file)
@@ -715,8 +715,7 @@ void PPCLinuxAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
    case GlobalValue::LinkOnceODRLinkage:
    case GlobalValue::WeakAnyLinkage:
    case GlobalValue::WeakODRLinkage:
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
     O << "\t.global " << name << '\n'
       << "\t.type " << name << ", @object\n"
       << "\t.weak " << name << '\n';
@@ -961,8 +960,7 @@ void PPCDarwinAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
    case GlobalValue::LinkOnceODRLinkage:
    case GlobalValue::WeakAnyLinkage:
    case GlobalValue::WeakODRLinkage:
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
     O << "\t.globl " << name << '\n'
       << "\t.weak_definition " << name << '\n';
     break;
index e0785d55823fccb0831ffe93669c46808705ee32..ec4e6b25b4473e6abceefb4caa040a40a48240f6 100644 (file)
@@ -276,8 +276,7 @@ void SparcAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
   }
 
   switch (GVar->getLinkage()) {
-   case GlobalValue::CommonAnyLinkage:
-   case GlobalValue::CommonODRLinkage:
+   case GlobalValue::CommonLinkage:
    case GlobalValue::LinkOnceAnyLinkage:
    case GlobalValue::LinkOnceODRLinkage:
    case GlobalValue::WeakAnyLinkage: // FIXME: Verify correct for weak.
index e3b6c27dcba8afafa284cf912251494d82c77097..2030d81260ddecfca4940da0cbd922066b5178ca 100644 (file)
@@ -856,8 +856,7 @@ void X86ATTAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) {
   }
 
   switch (GVar->getLinkage()) {
-  case GlobalValue::CommonAnyLinkage:
-  case GlobalValue::CommonODRLinkage:
+  case GlobalValue::CommonLinkage:
   case GlobalValue::LinkOnceAnyLinkage:
   case GlobalValue::LinkOnceODRLinkage:
   case GlobalValue::WeakAnyLinkage:
index 12b9c2fd4a2ac491484346fdebca40608a8d7201..098b1fbf7dd8ca136b02cf7b59cf3dbf2751ee92 100644 (file)
@@ -455,8 +455,7 @@ bool X86IntelAsmPrinter::doFinalization(Module &M) {
     bool bCustomSegment = false;
 
     switch (I->getLinkage()) {
-    case GlobalValue::CommonAnyLinkage:
-    case GlobalValue::CommonODRLinkage:
+    case GlobalValue::CommonLinkage:
     case GlobalValue::LinkOnceAnyLinkage:
     case GlobalValue::LinkOnceODRLinkage:
     case GlobalValue::WeakAnyLinkage:
index b72defb08a5792c4973f58af5dea8f432dc38518..c1cc7bacf084f2742bfd80a4b2d402d817e0faf7 100644 (file)
@@ -1189,8 +1189,7 @@ static void PrintLinkage(GlobalValue::LinkageTypes LT, raw_ostream &Out) {
   case GlobalValue::LinkOnceODRLinkage: Out << "linkonce_odr "; break;
   case GlobalValue::WeakAnyLinkage:     Out << "weak "; break;
   case GlobalValue::WeakODRLinkage:     Out << "weak_odr "; break;
-  case GlobalValue::CommonAnyLinkage:   Out << "common "; break;
-  case GlobalValue::CommonODRLinkage:   Out << "common_odr "; break;
+  case GlobalValue::CommonLinkage:      Out << "common "; break;
   case GlobalValue::AppendingLinkage:   Out << "appending "; break;
   case GlobalValue::DLLImportLinkage:   Out << "dllimport "; break;
   case GlobalValue::DLLExportLinkage:   Out << "dllexport "; break;
index 639d86213b7a9f0107d6f63e1117ebd9f03c3135..31be46d22f6d519462912d83bb00f955ea04bc16 100644 (file)
@@ -88,7 +88,6 @@ GVInternalLinkage
  | appending
  | dllexport
  | common
- | "common_odr"
  ;
 
 GVExternalLinkage
index 7d56a4e56a741c48089e5ebfbe6cd655207bad79..201d8ddddbebf11c9cef3b914f526939735b7429 100644 (file)
@@ -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
+syn keyword llvmKeyword common extern_weak
 syn keyword llvmKeyword thread_local dllimport dllexport
 syn keyword llvmKeyword hidden protected default
 syn keyword llvmKeyword except deplibs