diff options
author | Nuno Lopes <nunoplopes@sapo.pt> | 2012-06-18 16:04:04 +0000 |
---|---|---|
committer | Nuno Lopes <nunoplopes@sapo.pt> | 2012-06-18 16:04:04 +0000 |
commit | b7c941bad9b77d1456c2f5d01fca58dd641a5c01 (patch) | |
tree | 5c94edd63d37750ced3ed01623d52c1886d6e5be /llvm/docs/LangRef.html | |
parent | 3237ce737e8100934ab9d80541de5a12683dec18 (diff) | |
download | bcm5719-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.html | 44 |
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> |