llvmpy/docs/source/doc/llvm.core.Function.md
2012-08-08 17:49:24 -05:00

129 lines
3 KiB
Markdown

---
layout: page
title: Function (llvm.core)
---
# llvm.core.Function
* This will become a table of contents (this text will be scraped).
{:toc}
## Base Class
- [llvm.core.GlobalValue](llvm.core.GlobalValue.html)
## Static Constructors
### `new(module_obj, func_ty, name)`
Create a function named `name` of type `func_ty` in the module
`module_obj` and return a `Function` object that represents it.
### `get(module_obj, name)`
Return a `Function` object to represent the function
named `name` in the module `module_obj` or raise `LLVMException` if
such a function does not exist.
### `get_or_insert(module_obj, func_ty, name)`
Similar to `get`, except that if the function does not exist it
is added first, as though with `new`.
### `intrinsic(module_obj, intrinsic_id, types)`
Create and return a `Function` object that refers to an intrinsic
function, as described [here](functions.html#intrinsic).
## Properties
### `calling_convention`
The calling convention for the function,
as listed [here](functions.html#callconv).
### `collector`
A string holding the name of the garbage collection algorithm.
See [LLVM docs](http://www.llvm.org/docs/LangRef.html#gc).
### `does_not_throw`
Setting to True sets the `ATTR_NO_UNWIND` attribute, False
removes it. Shortcut to using `f.add_attribute(ATTR_NO_UNWIND)`
and `f.remove_attribute(ATTR_NO_UNWIND)`.
### `args`
\[read-only\]
List of [llvm.core.Argument][] objects representing the formal
arguments of the function.
### `basic_block_count`
\[read-only\]
Number of basic blocks belonging to this function. Same as
`len(f.basic_blocks)` but faster if you just want the count.
### `entry_basic_block`
\[read-only\]
The [llvm.core.BasicBlock][] object representing the entry
basic block for this function, or `None` if there are no
basic blocks.
### `basic_blocks`
\[read-only\]
List of [llvm.core.BasicBlock][] objects representing the
basic blocks belonging to this function.
### `intrinsic_id`
\[read-only\]
Returns the ID of the intrinsic if this object represents an
intrinsic instruction. Otherwise 0.
## Methods
### `delete()`
Deletes the function from it's module. Do not hold any
references to this object after calling `delete` on it.
### `append_basic_block(name)`
Add a new basic block named `name`, and return a corresponding
[llvm.core.BasicBlock][] object. Note that if this is not the
entry basic block, you'll have to add appropriate branch
instructions from other basic blocks yourself.
### `add_attribute(attr)`
Add an attribute `attr` to the function, from the set listed above.
### `remove_attribute(attr)`
Remove the attribute `attr` of the function.
### `viewCFG()`
Displays the control flow graph using the GraphViz tool.
### `viewCFGOnly()`
Displays the control flow graph using the GraphViz tool, but
omitting function bodies.
### `verify()`
Verifies the function. See [LLVM docs](http://llvm.org/docs/Passes.html#verify).
[llvm.core.Argument]: llvm.core.Argument.html
[llvm.core.BasicBlock]: llvm.core.BasicBlock.html