Erm, previous patch was wrong; Thanks Bill\!
[oota-llvm.git] / docs / SourceLevelDebugging.html
index 93d65ccaae680646b878aa37a937a668022dadf9..b028ee6d34928150704531c9e8e940d539fa1f56 100644 (file)
@@ -38,6 +38,7 @@
     <li><a href="#format_common_intrinsics">Debugger intrinsic functions</a>
       <ul>
       <li><a href="#format_common_declare">llvm.dbg.declare</a></li>
+      <li><a href="#format_common_value">llvm.dbg.value</a></li>
     </ul></li>
   </ol></li>
   <li><a href="#format_common_lifetime">Object lifetimes and scoping</a></li>
@@ -774,6 +775,25 @@ DW_TAG_return_variable = 258
 
 </div>
 
+<!-- ======================================================================= -->
+<div class="doc_subsubsection">
+  <a name="format_common_value">llvm.dbg.value</a>
+</div>
+
+<div class="doc_text">
+<pre>
+  void %<a href="#format_common_value">llvm.dbg.value</a>( metadata, i64, metadata )
+</pre>
+
+<p>This intrinsic provides information when a user source variable is set to a
+   new value.  The first argument is the new value (wrapped as metadata).  The
+   second argument is the offset in the user source variable where the new value
+   is written.  The third argument is
+   the <tt>%<a href="#format_variables">llvm.dbg.variable</a></tt> containing
+   the description of the user source variable. </p>
+
+</div>
+
 <!-- ======================================================================= -->
 <div class="doc_subsection">
   <a name="format_common_lifetime">Object lifetimes and scoping</a>
@@ -813,23 +833,23 @@ DW_TAG_return_variable = 258
 <pre>
 define void @foo() nounwind ssp {
 entry:
-  %X = alloca i32, align 4                        ; <i32*> [#uses=4]
-  %Y = alloca i32, align 4                        ; <i32*> [#uses=4]
-  %Z = alloca i32, align 4                        ; <i32*> [#uses=3]
-  %0 = bitcast i32* %X to { }*                    ; <{ }*> [#uses=1]
+  %X = alloca i32, align 4                        ; &lt;i32*&gt; [#uses=4]
+  %Y = alloca i32, align 4                        ; &lt;i32*&gt; [#uses=4]
+  %Z = alloca i32, align 4                        ; &lt;i32*&gt; [#uses=3]
+  %0 = bitcast i32* %X to { }*                    ; &lt;{ }*&gt; [#uses=1]
   call void @llvm.dbg.declare({ }* %0, metadata !0), !dbg !7
   store i32 21, i32* %X, !dbg !8
-  %1 = bitcast i32* %Y to { }*                    ; <{ }*> [#uses=1]
+  %1 = bitcast i32* %Y to { }*                    ; &lt;{ }*&gt; [#uses=1]
   call void @llvm.dbg.declare({ }* %1, metadata !9), !dbg !10
   store i32 22, i32* %Y, !dbg !11
-  %2 = bitcast i32* %Z to { }*                    ; <{ }*> [#uses=1]
+  %2 = bitcast i32* %Z to { }*                    ; &lt;{ }*&gt; [#uses=1]
   call void @llvm.dbg.declare({ }* %2, metadata !12), !dbg !14
   store i32 23, i32* %Z, !dbg !15
-  %tmp = load i32* %X, !dbg !16                   ; <i32> [#uses=1]
-  %tmp1 = load i32* %Y, !dbg !16                  ; <i32> [#uses=1]
-  %add = add nsw i32 %tmp, %tmp1, !dbg !16        ; <i32> [#uses=1]
+  %tmp = load i32* %X, !dbg !16                   ; &lt;i32&gt; [#uses=1]
+  %tmp1 = load i32* %Y, !dbg !16                  ; &lt;i32&gt; [#uses=1]
+  %add = add nsw i32 %tmp, %tmp1, !dbg !16        ; &lt;i32&gt; [#uses=1]
   store i32 %add, i32* %Z, !dbg !16
-  %tmp2 = load i32* %Y, !dbg !17                  ; <i32> [#uses=1]
+  %tmp2 = load i32* %Y, !dbg !17                  ; &lt;i32&gt; [#uses=1]
   store i32 %tmp2, i32* %X, !dbg !17
   ret void, !dbg !18
 }
@@ -875,7 +895,7 @@ declare void @llvm.dbg.declare({ }*, metadata) nounwind readnone
    function.</p>
 
 <div class="doc_code">
-<pre> 
+<pre>
 call void @llvm.dbg.declare({ }* %0, metadata !0), !dbg !7   
 </pre>
 </div>
@@ -910,7 +930,7 @@ call void @llvm.dbg.declare({ }* %0, metadata !0), !dbg !7
 <p>Now lets take another example.</p>
 
 <div class="doc_code">
-<pre> 
+<pre>
 call void @llvm.dbg.declare({ }* %2, metadata !12), !dbg !14
 </pre>
 </div>