[llvm-commits] CVS: llvm/docs/LangRef.html

Chris Lattner sabre at nondot.org
Sat Jan 13 22:52:03 PST 2007



Changes in directory llvm/docs:

LangRef.html updated: 1.196 -> 1.197
---
Log message:

clarify linkonce/weak linkage



---
Diffs of the changes:  (+11 -8)

 LangRef.html |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)


Index: llvm/docs/LangRef.html
diff -u llvm/docs/LangRef.html:1.196 llvm/docs/LangRef.html:1.197
--- llvm/docs/LangRef.html:1.196	Sun Jan 14 00:29:54 2007
+++ llvm/docs/LangRef.html	Sun Jan 14 00:51:48 2007
@@ -424,23 +424,26 @@
   an internal global value may cause the internal to be renamed as necessary to
   avoid collisions.  Because the symbol is internal to the module, all
   references can be updated.  This corresponds to the notion of the
-  '<tt>static</tt>' keyword in C, or the idea of "anonymous namespaces" in C++.
+  '<tt>static</tt>' keyword in C.
   </dd>
 
   <dt><tt><b><a name="linkage_linkonce">linkonce</a></b></tt>: </dt>
 
-  <dd>"<tt>linkonce</tt>" linkage is similar to <tt>internal</tt> linkage, with
-  the twist that linking together two modules defining the same
-  <tt>linkonce</tt> globals will cause one of the globals to be discarded.  This
-  is typically used to implement inline functions.  Unreferenced
-  <tt>linkonce</tt> globals are allowed to be discarded.
+  <dd>Globals with "<tt>linkonce</tt>" linkage are merged with other globals of
+  the same name when linkage occurs.  This is typically used to implement 
+  inline functions, templates, or other code which must be generated in each 
+  translation unit that uses it.  Unreferenced <tt>linkonce</tt> globals are 
+  allowed to be discarded.
   </dd>
 
   <dt><tt><b><a name="linkage_weak">weak</a></b></tt>: </dt>
 
   <dd>"<tt>weak</tt>" linkage is exactly the same as <tt>linkonce</tt> linkage,
   except that unreferenced <tt>weak</tt> globals may not be discarded.  This is
-  used to implement constructs in C such as "<tt>int X;</tt>" at global scope.
+  used for globals that may be emitted in multiple translation units, but that
+  are not guaranteed to be emitted into every translation unit that uses them.
+  One example of this are common globals in C, such as "<tt>int X;</tt>" at 
+  global scope.
   </dd>
 
   <dt><tt><b><a name="linkage_appending">appending</a></b></tt>: </dt>
@@ -4487,7 +4490,7 @@
 
   <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2007/01/14 06:29:54 $
+  Last modified: $Date: 2007/01/14 06:51:48 $
 </address>
 </body>
 </html>






More information about the llvm-commits mailing list