Remove the one-definition-rule version of extern_weak

linkage: this linkage type only applies to declarations,
but ODR is only relevant to globals with definitions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66650 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands
2009-03-11 08:08:06 +00:00
parent 841c6a4345
commit 5f4ee1fc5d
13 changed files with 25 additions and 52 deletions
+5 -7
View File
@@ -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>