129 lines
3 KiB
Markdown
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
|