Update docs for bitcode changes. For object size checking we won't

work with partial objects so just count the type as a boolean. Update
appropriately.

llvm-svn: 91954
This commit is contained in:
Eric Christopher 2009-12-23 00:29:49 +00:00
parent ef408db250
commit 31e39bd3d4
1 changed files with 8 additions and 27 deletions

View File

@ -7257,8 +7257,8 @@ LLVM</a>.</p>
<h5>Syntax:</h5> <h5>Syntax:</h5>
<pre> <pre>
declare i32 @llvm.objectsize.i32( i8* &lt;ptr&gt;, i32 &lt;type&gt; ) declare i32 @llvm.objectsize.i32( i8* &lt;object&gt;, i1 &lt;type&gt; )
declare i64 @llvm.objectsize.i64( i8* &lt;ptr&gt;, i32 &lt;type&gt; ) declare i64 @llvm.objectsize.i64( i8* &lt;object&gt;, i1 &lt;type&gt; )
</pre> </pre>
<h5>Overview:</h5> <h5>Overview:</h5>
@ -7267,34 +7267,15 @@ LLVM</a>.</p>
operation like memcpy will either overflow a buffer that corresponds to operation like memcpy will either overflow a buffer that corresponds to
an object, or b) to determine that a runtime check for overflow isn't an object, or b) to determine that a runtime check for overflow isn't
necessary. An object in this context means an allocation of a necessary. An object in this context means an allocation of a
specific <a href="#typesystem">type</a>.</p> specific class, structure, array, or other object.</p>
<h5>Arguments:</h5> <h5>Arguments:</h5>
<p>The <tt>llvm.objectsize</tt> intrinsic takes two arguments. The first <p>The <tt>llvm.objectsize</tt> intrinsic takes two arguments. The first
argument is a pointer to the object <tt>ptr</tt>. The second argument argument is a pointer to or into the <tt>object</tt>. The second argument
is an integer <tt>type</tt> which ranges from 0 to 3. The first bit in is a boolean 0 or 1. This argument determines whether you want the
the type corresponds to a return value based on whole objects, maximum (0) or minimum (1) bytes remaining. This needs to be a literal 0 or
and the second bit whether or not we return the maximum or minimum 1, variables are not allowed.</p>
remaining bytes computed.</p>
<table class="layout">
<tr class="layout">
<td class="left"><tt>00</tt></td>
<td class="left">whole object, maximum number of bytes</td>
</tr>
<tr class="layout">
<td class="left"><tt>01</tt></td>
<td class="left">partial object, maximum number of bytes</td>
</tr>
<tr class="layout">
<td class="left"><tt>10</tt></td>
<td class="left">whole object, minimum number of bytes</td>
</tr>
<tr class="layout">
<td class="left"><tt>11</tt></td>
<td class="left">partial object, minimum number of bytes</td>
</tr>
</table>
<h5>Semantics:</h5> <h5>Semantics:</h5>
<p>The <tt>llvm.objectsize</tt> intrinsic is lowered to either a constant <p>The <tt>llvm.objectsize</tt> intrinsic is lowered to either a constant
representing the size of the object concerned or <tt>i32/i64 -1 or 0</tt> representing the size of the object concerned or <tt>i32/i64 -1 or 0</tt>