document the forthcoming blockaddress constant.
authorChris Lattner <sabre@nondot.org>
Tue, 27 Oct 2009 21:01:34 +0000 (21:01 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 27 Oct 2009 21:01:34 +0000 (21:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85306 91177308-0d34-0410-b5e6-96231b3b80d8

docs/LangRef.html

index 82e895bec2b75e76b9726f06b1c4151ab5790796..916826aa462e924f5c833e03aa17bf3d041bc02a 100644 (file)
@@ -83,6 +83,7 @@
       <li><a href="#complexconstants">Complex Constants</a></li>
       <li><a href="#globalconstants">Global Variable and Function Addresses</a></li>
       <li><a href="#undefvalues">Undefined Values</a></li>
+      <li><a href="#blockaddress">Address of Basic Block</a></li>
       <li><a href="#constantexprs">Constant Expressions</a></li>
       <li><a href="#metadata">Embedded Metadata</a></li>
     </ol>
@@ -2170,6 +2171,29 @@ has undefined behavior.</p>
 
 </div>
 
+<!-- ======================================================================= -->
+<div class="doc_subsection"><a name="blockaddress">Address of Basic
+    Block</a></div>
+<div class="doc_text">
+
+<p><b><tt>blockaddress(@function, %block)</tt></b></p>
+
+<p>The '<tt>blockaddress</tt>' constant computes the address of the specified
+   basic block in the specified function, and always has an i8* type.</p>
+   
+     
+<p>This value only has defined behavior when used as an operand to the
+   '<a href="#i_indbr"><tt>indbr</tt></a>' instruction or for comparisons
+   against null.  Pointer equality tests between labels addresses is undefined
+   behavior - though, again, comparison against null is ok, and no label is
+   equal to the null pointer.  Some targets may provide defined semantics when
+   using the value as the operand to an inline assembly, but that is target
+   specific.
+   </p>
+
+</div>
+
+
 <!-- ======================================================================= -->
 <div class="doc_subsection"><a name="constantexprs">Constant Expressions</a>
 </div>
@@ -2688,7 +2712,8 @@ IfUnequal:
 
 <p>The '<tt>indbr</tt>' instruction implements an indirect branch to a label
    within the current function, whose address is specified by
-   "<tt>address</tt>".</p>
+   "<tt>address</tt>".  Address must be derived from a <a
+   href="#blockaddress">blockaddress</a> constant.</p>
 
 <h5>Arguments:</h5>