summaryrefslogtreecommitdiffstats
path: root/llvm/docs/LangRef.html
diff options
context:
space:
mode:
authorNuno Lopes <nunoplopes@sapo.pt>2012-06-18 16:04:04 +0000
committerNuno Lopes <nunoplopes@sapo.pt>2012-06-18 16:04:04 +0000
commitb7c941bad9b77d1456c2f5d01fca58dd641a5c01 (patch)
tree5c94edd63d37750ced3ed01623d52c1886d6e5be /llvm/docs/LangRef.html
parent3237ce737e8100934ab9d80541de5a12683dec18 (diff)
downloadbcm5719-llvm-b7c941bad9b77d1456c2f5d01fca58dd641a5c01.tar.gz
bcm5719-llvm-b7c941bad9b77d1456c2f5d01fca58dd641a5c01.zip
add the 'alloc' metadata node to represent the size of offset of buffers pointed to by pointers.
This metadata can be attached to any instruction returning a pointer llvm-svn: 158660
Diffstat (limited to 'llvm/docs/LangRef.html')
-rw-r--r--llvm/docs/LangRef.html44
1 files changed, 44 insertions, 0 deletions
diff --git a/llvm/docs/LangRef.html b/llvm/docs/LangRef.html
index 9cb7e6392ab..2b81279b6e5 100644
--- a/llvm/docs/LangRef.html
+++ b/llvm/docs/LangRef.html
@@ -105,6 +105,7 @@
<li><a href="#tbaa">'<tt>tbaa</tt>' Metadata</a></li>
<li><a href="#fpmath">'<tt>fpmath</tt>' Metadata</a></li>
<li><a href="#range">'<tt>range</tt>' Metadata</a></li>
+ <li><a href="#alloc">'<tt>alloc</tt>' Metadata</a></li>
</ol>
</li>
</ol>
@@ -3077,6 +3078,49 @@ call void @llvm.dbg.value(metadata !24, i64 0, metadata !25)
</pre>
</div>
</div>
+
+<!-- _______________________________________________________________________ -->
+<h4>
+ <a name="alloc">'<tt>alloc</tt>' Metadata</a>
+</h4>
+
+<div>
+
+<p><tt>alloc</tt> metadata may be attached to any instruction returning a
+ pointer. It can be used to express the size and offset relative to the
+ beginning of the buffer pointed by.</p>
+
+<blockquote>
+
+<p>The first parameter is a function that returns the size of the buffer, and
+ the second (optional) parameter is a function that returns the offset from
+ the beginning of the buffer. If the second parameter is not present or null,
+ the offset is assumed to be null. Both functions must be either readonly or
+ readnone.</p>
+<p><tt>alloc</tt> metadata can have additional parameters, which are passed to
+ the size and offset functions when they are evaluated. Therefore the size and
+ offset functions must have the same signature.</p>
+
+</blockquote>
+
+
+<p>Examples:</p>
+<div class="doc_code">
+<pre>
+ ; size of buffer allocated by this call is my_malloc_size(%s), and offset=0
+ %a = call my_malloc(%s), !alloc !{i32 (i32)* @my_malloc_size, null, i32 %s}
+
+ ; size of the buffer pointed by *ptr is size(%x), and offset=offset(%x)
+ %b = load i8** %foo, !alloc !{i32 (i32)* @size, i32 (i32)* @offset, i32 %x}
+
+ ; size of buffer allocated by this call is foo_size(), and offset=0
+ %a = call alloc_foo(%s), !alloc !0
+...
+!0 = metadata {i32 ()* @foo_size}
+</pre>
+</div>
+</div>
+
</div>
</div>
OpenPOWER on IntegriCloud