Skip to content

Latest commit

 

History

History
224 lines (149 loc) · 5.65 KB

value-references.rst

File metadata and controls

224 lines (149 loc) · 5.65 KB

Value references

llvmlite.binding

A value reference is a wrapper around an LLVM value for you to inspect. You cannot create a value reference yourself. You get them from methods of the ModuleRef and ValueRef classes.

Enumerations

The linkage types allowed for global values are:

  • external

  • available_externally

  • linkonce_any

  • linkonce_odr

  • linkonce_odr_autohide

  • weak_any

  • weak_odr

  • appending

  • internal

  • private

  • dllimport

  • dllexport

  • external_weak

  • ghost

  • common

  • linker_private

  • linker_private_weak

The visibility styles allowed for global values are:

  • default

  • hidden

  • protected

The storage classes allowed for global values are:

  • default

  • dllimport

  • dllexport

The value kinds allowed are:

  • argument

  • basic_block

  • memory_use

  • memory_def

  • memory_phi

  • function

  • global_alias

  • global_ifunc

  • global_variable

  • block_address

  • constant_expr

  • constant_array

  • constant_struct

  • constant_vector

  • undef_value

  • constant_aggregate_zero

  • constant_data_array

  • constant_data_vector

  • constant_int

  • constant_fp

  • constant_pointer_null

  • constant_token_none

  • metadata_as_value

  • inline_asm

  • instruction

  • poison_value

The ValueRef class

A wrapper around an LLVM value. The attributes available are:

  • is_declaration

    • True---The global value is a mere declaration.
    • False---The global value is defined in the given module.
  • linkage

    The linkage type---a Linkage instance---for this value. This attribute can be set.

  • module

    The module---a ModuleRef instance---that this value is defined in.

  • function

    The function---a ValueRef instance---that this value is defined in.

  • block

    The basic block---a ValueRef instance---that this value is defined in.

  • instruction

    The instruction---a ValueRef instance---that this value is defined in.

  • name

    This value's name, as a string. This attribute can be set.

  • type

    This value's LLVM type as TypeRef object.

  • storage_class

    The storage class---a StorageClass instance---for this value. This attribute can be set.

  • visibility

    The visibility style---a Visibility instance---for this value. This attribute can be set.

  • value_kind

    The LLVM value kind---a ValueKind instance---for this value.

  • blocks

    An iterator over the basic blocks in this function. Each block is a ValueRef instance.

  • arguments

    An iterator over the arguments of this function. Each argument is a ValueRef instance.

  • instructions

    An iterator over the instructions in this basic block. Each instruction is a ValueRef instance.

  • incoming_blocks

    An iterator over the incoming blocks of a phi instruction. Each block is a ValueRef instance.

  • operands

    An iterator over the operands in this instruction. Each operand is a ValueRef instance.

  • opcode

    The instruction's opcode, as a string.

  • attributes

    An iterator over the attributes in this value. Each attribute is a bytes instance. Values that have attributes are: function, argument (and others for which attributes support has not been implemented)

  • is_global

    The value is a global variable.

  • is_function

    The value is a function.

  • is_argument

    The value is a function's argument.

  • is_block

    The value is a function's basic block.

  • is_instruction

    The value is a basic block's instruction.

  • is_operand

    The value is a instruction's operand.

  • is_constant

    The value is a constant.

  • get_constant_value(self, signed_int=False, round_fp=False)

    Return the constant value, either as a literal (for example, int or float) when supported, or as a string otherwise. Keyword arguments specify the preferences during conversion:

    • If signed_int is True and the constant is an integer, returns a signed integer.
    • If round_fp True and the constant is a floating point value, rounds the result upon accuracy loss (e.g., when querying an fp128 value). By default, raises an exception on accuracy loss.