Document the newly generalized model for constant globals.
authorChris Lattner <sabre@nondot.org>
Sat, 12 Feb 2005 19:30:21 +0000 (19:30 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 12 Feb 2005 19:30:21 +0000 (19:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20136 91177308-0d34-0410-b5e6-96231b3b80d8

docs/LangRef.html

index e4e2d44afbe22c0706b911b6e8a364db6c3ac898..2ad68284a7cbe2ae41645d4b955cbc9a285435b1 100644 (file)
@@ -423,12 +423,22 @@ to have any linkage type other than "externally visible".</a></p>
 
 <div class="doc_text">
 
-<p>Global variables define regions of memory allocated at compilation
-time instead of run-time.  Global variables may optionally be
-initialized.  A variable may be defined as a global "constant", which
-indicates that the contents of the variable will never be modified
-(enabling better optimization, allowing the global data to be placed in the
-read-only section of an executable, etc).</p>
+<p>Global variables define regions of memory allocated at compilation time
+instead of run-time.  Global variables may optionally be initialized.  A
+variable may be defined as a global "constant", which indicates that the
+contents of the variable will <b>never</b> be modified (enabling better
+optimization, allowing the global data to be placed in the read-only section of
+an executable, etc).  Note that variables that need runtime initialization
+cannot be marked "constant", as there is a store to the variable.</p>
+
+<p>
+LLVM explicitly allows <em>declarations</em> of global variables to be marked
+constant, even if the final definition of the global is not.  This capability
+can be used to enable slightly better optimization of the program, but requires
+the language definition to guarantee that optimizations based on the
+'constantness' are valid for the translation units that do not include the
+definition.
+</p>
 
 <p>As SSA values, global variables define pointer values that are in
 scope (i.e. they dominate) all basic blocks in the program.  Global