diff options
author | Jeffrey Yasskin <jyasskin@google.com> | 2009-04-30 22:33:41 +0000 |
---|---|---|
committer | Jeffrey Yasskin <jyasskin@google.com> | 2009-04-30 22:33:41 +0000 |
commit | 7ebb6ac102ed5ced799bf7b42b517ab48c896622 (patch) | |
tree | 30ce1bec046b61fe5e2734972dbbfb9b695de392 /docs/ProgrammersManual.html | |
parent | 52576a32cf2601973d93ba48f7e4e3131d1df51c (diff) | |
download | external_llvm-7ebb6ac102ed5ced799bf7b42b517ab48c896622.zip external_llvm-7ebb6ac102ed5ced799bf7b42b517ab48c896622.tar.gz external_llvm-7ebb6ac102ed5ced799bf7b42b517ab48c896622.tar.bz2 |
Add a mention of TypeBuilder to the programmer's manual, and clean up the class
comment a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70515 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/ProgrammersManual.html')
-rw-r--r-- | docs/ProgrammersManual.html | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/docs/ProgrammersManual.html b/docs/ProgrammersManual.html index e2525ae..253e836 100644 --- a/docs/ProgrammersManual.html +++ b/docs/ProgrammersManual.html @@ -117,6 +117,7 @@ with another <tt>Value</tt></a> </li> <li><a href="#schanges_deletingGV">Deleting <tt>GlobalVariable</tt>s</a> </li> </ul> </li> + <li><a href="#create_types">How to Create Types</a></li> <!-- <li>Working with the Control Flow Graph <ul> @@ -2088,6 +2089,46 @@ GV->eraseFromParent(); </div> +<!-- ======================================================================= --> +<div class="doc_subsection"> + <a name="create_types">How to Create Types</a> +</div> + +<div class="doc_text"> + +<p>In generating IR, you may need some complex types. If you know these types +statically, you can use <tt>TypeBuilder<...>::get()</tt>, defined +in <tt>llvm/Support/TypeBuilder.h</tt>, to retrieve them. <tt>TypeBuilder</tt> +has two forms depending on whether you're building types for cross-compilation +or native library use. <tt>TypeBuilder<T, true></tt> requires +that <tt>T</tt> be independent of the host environment, meaning that it's built +out of types from +the <a href="/doxygen/namespacellvm_1_1types.html"><tt>llvm::types</tt></a> +namespace and pointers, functions, arrays, etc. built of +those. <tt>TypeBuilder<T, false></tt> additionally allows native C types +whose size may depend on the host compiler. For example,</p> + +<div class="doc_code"> +<pre> +FunctionType *ft = TypeBuilder<types::i<8>(types::i<32>*), true>::get(); +</pre> +</div> + +<p>is easier to read and write than the equivalent</p> + +<div class="doc_code"> +<pre> +std::vector<const Type*> params; +params.push_back(PointerType::getUnqual(Type::Int32Ty)); +FunctionType *ft = FunctionType::get(Type::Int8Ty, params, false); +</pre> +</div> + +<p>See the <a href="/doxygen/TypeBuilder_8h-source.html#l00001">class +comment</a> for more details.</p> + +</div> + <!-- *********************************************************************** --> <div class="doc_section"> <a name="advanced">Advanced Topics</a> |