llvmlite.ir
All values <ir-values>
used in a LLVM module are explicitly typed. All types derive from a common base class Type
. Most of them can be instantiated directly. Once instantiated, a type should be considered immutable.
The base class for all types. You should never instantiate it directly. Types have the following methods in common:
as_pointer(addrspace=0)
Return a PointerType
pointing to this type. The optional addrspace integer allows you to choose a non-default address space (the meaning is platform-dependent).
get_abi_size(target_data)
Get the ABI size of this type, in bytes, according to the target_data (a llvmlite.binding.TargetData
instance).
get_abi_alignment(target_data)
Get the ABI alignment of this type, in bytes, according to the target_data (a llvmlite.binding.TargetData
instance).
Note
get_abi_size
and get_abi_alignment
call into the LLVM C++ API to get the requested information.
__call__(value)
Convenience method to create a Constant
of this type with the given value:
>>> int32 = ir.IntType(32)
>>> c = int32(42)
>>> c
<ir.Constant type='i32' value=42>
>>> print(c)
i32 42
The type of pointers to another type. pointee is the type pointed to. The optional addrspace integer allows you to choose a non-default address space (the meaning is platform-dependent).
Pointer types exposes the following attributes:
addrspace
The pointer's address space number.
pointee
The type pointed to.
The type of integers. bits, a Python integer, specifies the bitwidth of the integers having this type.
width
The width in bits.
The type of single-precision floating-point real numbers.
The type of double-precision floating-point real numbers.
The class for void types; only used as the return type of a function without a return value.
The base class for aggregate types. You should never instantiate it directly. Aggregate types have the following attribute in common:
elements
A tuple-like immutable sequence of element types for this aggregate type.
The class for array types. element is the type of every element, count the number of elements (a Python integer).
The class for literal struct types. elements is a sequence of element types for each member of the structure.
The type of a function. return_type is the return type of the function. args is a sequence describing the types of argument to the function. If var_arg is true, the function takes a variable number of additional arguments (of unknown types) after the explicit args.
Example:
int32 = ir.IntType(32)
fnty = ir.FunctionType(int32, (ir.DoubleType(), ir.PointerType(int32)))
An equivalent C declaration would be:
typedef int32_t (*fnty)(double, int32_t *);
The type for labels <label>
. You don't need to instantiate this type.
The type for metadata
. You don't need to instantiate this type.
Note
This used to be called MetaData
but was renamed for clarity.