sig
type llcontext
type llmodule
type lltype
type llvalue
type lluse
type llbasicblock
type llbuilder
type llmemorybuffer
type llmdkind
module TypeKind :
sig
type t =
Void
| Half
| Float
| Double
| X86fp80
| Fp128
| Ppc_fp128
| Label
| Integer
| Function
| Struct
| Array
| Pointer
| Vector
| Metadata
| X86_mmx
end
module Linkage :
sig
type t =
External
| Available_externally
| Link_once
| Link_once_odr
| Link_once_odr_auto_hide
| Weak
| Weak_odr
| Appending
| Internal
| Private
| Dllimport
| Dllexport
| External_weak
| Ghost
| Common
| Linker_private
| Linker_private_weak
end
module Visibility : sig type t = Default | Hidden | Protected end
module CallConv :
sig
val c : int
val fast : int
val cold : int
val x86_stdcall : int
val x86_fastcall : int
end
module Attribute :
sig
type t =
Zext
| Sext
| Noreturn
| Inreg
| Structret
| Nounwind
| Noalias
| Byval
| Nest
| Readnone
| Readonly
| Noinline
| Alwaysinline
| Optsize
| Ssp
| Sspreq
| Alignment of int
| Nocapture
| Noredzone
| Noimplicitfloat
| Naked
| Inlinehint
| Stackalignment of int
| ReturnsTwice
| UWTable
| NonLazyBind
end
module Icmp :
sig type t = Eq | Ne | Ugt | Uge | Ult | Ule | Sgt | Sge | Slt | Sle end
module Fcmp :
sig
type t =
False
| Oeq
| Ogt
| Oge
| Olt
| Ole
| One
| Ord
| Uno
| Ueq
| Ugt
| Uge
| Ult
| Ule
| Une
| True
end
module Opcode :
sig
type t =
Invalid
| Ret
| Br
| Switch
| IndirectBr
| Invoke
| Invalid2
| Unreachable
| Add
| FAdd
| Sub
| FSub
| Mul
| FMul
| UDiv
| SDiv
| FDiv
| URem
| SRem
| FRem
| Shl
| LShr
| AShr
| And
| Or
| Xor
| Alloca
| Load
| Store
| GetElementPtr
| Trunc
| ZExt
| SExt
| FPToUI
| FPToSI
| UIToFP
| SIToFP
| FPTrunc
| FPExt
| PtrToInt
| IntToPtr
| BitCast
| ICmp
| FCmp
| PHI
| Call
| Select
| UserOp1
| UserOp2
| VAArg
| ExtractElement
| InsertElement
| ShuffleVector
| ExtractValue
| InsertValue
| Fence
| AtomicCmpXchg
| AtomicRMW
| Resume
| LandingPad
end
module LandingPadClauseTy : sig type t = Catch | Filter end
module ThreadLocalMode :
sig
type t = None | GeneralDynamic | LocalDynamic | InitialExec | LocalExec
end
module AtomicOrdering :
sig
type t =
NotAtomic
| Unordered
| Monotonic
| Invalid
| Acquire
| Release
| AcqiureRelease
| SequentiallyConsistent
end
module AtomicRMWBinOp :
sig
type t =
Xchg
| Add
| Sub
| And
| Nand
| Or
| Xor
| Max
| Min
| UMax
| UMin
end
module ValueKind :
sig
type t =
NullValue
| Argument
| BasicBlock
| InlineAsm
| MDNode
| MDString
| BlockAddress
| ConstantAggregateZero
| ConstantArray
| ConstantDataArray
| ConstantDataVector
| ConstantExpr
| ConstantFP
| ConstantInt
| ConstantPointerNull
| ConstantStruct
| ConstantVector
| Function
| GlobalAlias
| GlobalVariable
| UndefValue
| Instruction of Llvm.Opcode.t
end
type ('a, 'b) llpos = At_end of 'a | Before of 'b
type ('a, 'b) llrev_pos = At_start of 'a | After of 'b
exception IoError of string
val enable_pretty_stacktrace : unit -> unit
val install_fatal_error_handler : (string -> unit) -> unit
val reset_fatal_error_handler : unit -> unit
val create_context : unit -> Llvm.llcontext
val dispose_context : Llvm.llcontext -> unit
val global_context : unit -> Llvm.llcontext
val mdkind_id : Llvm.llcontext -> string -> Llvm.llmdkind
val create_module : Llvm.llcontext -> string -> Llvm.llmodule
val dispose_module : Llvm.llmodule -> unit
val target_triple : Llvm.llmodule -> string
val set_target_triple : string -> Llvm.llmodule -> unit
val data_layout : Llvm.llmodule -> string
val set_data_layout : string -> Llvm.llmodule -> unit
val dump_module : Llvm.llmodule -> unit
val print_module : string -> Llvm.llmodule -> unit
val string_of_llmodule : Llvm.llmodule -> string
val set_module_inline_asm : Llvm.llmodule -> string -> unit
val module_context : Llvm.llmodule -> Llvm.llcontext
val classify_type : Llvm.lltype -> Llvm.TypeKind.t
val type_is_sized : Llvm.lltype -> bool
val type_context : Llvm.lltype -> Llvm.llcontext
val dump_type : Llvm.lltype -> unit
val string_of_lltype : Llvm.lltype -> string
val i1_type : Llvm.llcontext -> Llvm.lltype
val i8_type : Llvm.llcontext -> Llvm.lltype
val i16_type : Llvm.llcontext -> Llvm.lltype
val i32_type : Llvm.llcontext -> Llvm.lltype
val i64_type : Llvm.llcontext -> Llvm.lltype
val integer_type : Llvm.llcontext -> int -> Llvm.lltype
val integer_bitwidth : Llvm.lltype -> int
val float_type : Llvm.llcontext -> Llvm.lltype
val double_type : Llvm.llcontext -> Llvm.lltype
val x86fp80_type : Llvm.llcontext -> Llvm.lltype
val fp128_type : Llvm.llcontext -> Llvm.lltype
val ppc_fp128_type : Llvm.llcontext -> Llvm.lltype
val function_type : Llvm.lltype -> Llvm.lltype array -> Llvm.lltype
val var_arg_function_type : Llvm.lltype -> Llvm.lltype array -> Llvm.lltype
val is_var_arg : Llvm.lltype -> bool
val return_type : Llvm.lltype -> Llvm.lltype
val param_types : Llvm.lltype -> Llvm.lltype array
val struct_type : Llvm.llcontext -> Llvm.lltype array -> Llvm.lltype
val packed_struct_type : Llvm.llcontext -> Llvm.lltype array -> Llvm.lltype
val struct_name : Llvm.lltype -> string option
val named_struct_type : Llvm.llcontext -> string -> Llvm.lltype
val struct_set_body : Llvm.lltype -> Llvm.lltype array -> bool -> unit
val struct_element_types : Llvm.lltype -> Llvm.lltype array
val is_packed : Llvm.lltype -> bool
val is_opaque : Llvm.lltype -> bool
val array_type : Llvm.lltype -> int -> Llvm.lltype
val pointer_type : Llvm.lltype -> Llvm.lltype
val qualified_pointer_type : Llvm.lltype -> int -> Llvm.lltype
val vector_type : Llvm.lltype -> int -> Llvm.lltype
val element_type : Llvm.lltype -> Llvm.lltype
val array_length : Llvm.lltype -> int
val address_space : Llvm.lltype -> int
val vector_size : Llvm.lltype -> int
val void_type : Llvm.llcontext -> Llvm.lltype
val label_type : Llvm.llcontext -> Llvm.lltype
val x86_mmx_type : Llvm.llcontext -> Llvm.lltype
val type_by_name : Llvm.llmodule -> string -> Llvm.lltype option
val type_of : Llvm.llvalue -> Llvm.lltype
val classify_value : Llvm.llvalue -> Llvm.ValueKind.t
val value_name : Llvm.llvalue -> string
val set_value_name : string -> Llvm.llvalue -> unit
val dump_value : Llvm.llvalue -> unit
val string_of_llvalue : Llvm.llvalue -> string
val replace_all_uses_with : Llvm.llvalue -> Llvm.llvalue -> unit
val use_begin : Llvm.llvalue -> Llvm.lluse option
val use_succ : Llvm.lluse -> Llvm.lluse option
val user : Llvm.lluse -> Llvm.llvalue
val used_value : Llvm.lluse -> Llvm.llvalue
val iter_uses : (Llvm.lluse -> unit) -> Llvm.llvalue -> unit
val fold_left_uses : ('a -> Llvm.lluse -> 'a) -> 'a -> Llvm.llvalue -> 'a
val fold_right_uses : (Llvm.lluse -> 'a -> 'a) -> Llvm.llvalue -> 'a -> 'a
val operand : Llvm.llvalue -> int -> Llvm.llvalue
val set_operand : Llvm.llvalue -> int -> Llvm.llvalue -> unit
val num_operands : Llvm.llvalue -> int
val is_constant : Llvm.llvalue -> bool
val const_null : Llvm.lltype -> Llvm.llvalue
val const_all_ones : Llvm.lltype -> Llvm.llvalue
val const_pointer_null : Llvm.lltype -> Llvm.llvalue
val undef : Llvm.lltype -> Llvm.llvalue
val is_null : Llvm.llvalue -> bool
val is_undef : Llvm.llvalue -> bool
val constexpr_opcode : Llvm.llvalue -> Llvm.Opcode.t
val has_metadata : Llvm.llvalue -> bool
val metadata : Llvm.llvalue -> Llvm.llmdkind -> Llvm.llvalue option
val set_metadata : Llvm.llvalue -> Llvm.llmdkind -> Llvm.llvalue -> unit
val clear_metadata : Llvm.llvalue -> Llvm.llmdkind -> unit
val mdstring : Llvm.llcontext -> string -> Llvm.llvalue
val mdnode : Llvm.llcontext -> Llvm.llvalue array -> Llvm.llvalue
val get_mdstring : Llvm.llvalue -> string option
val get_named_metadata : Llvm.llmodule -> string -> Llvm.llvalue array
val add_named_metadata_operand :
Llvm.llmodule -> string -> Llvm.llvalue -> unit
val const_int : Llvm.lltype -> int -> Llvm.llvalue
val const_of_int64 : Llvm.lltype -> Int64.t -> bool -> Llvm.llvalue
val int64_of_const : Llvm.llvalue -> Int64.t option
val const_int_of_string : Llvm.lltype -> string -> int -> Llvm.llvalue
val const_float : Llvm.lltype -> float -> Llvm.llvalue
val const_float_of_string : Llvm.lltype -> string -> Llvm.llvalue
val const_string : Llvm.llcontext -> string -> Llvm.llvalue
val const_stringz : Llvm.llcontext -> string -> Llvm.llvalue
val const_array : Llvm.lltype -> Llvm.llvalue array -> Llvm.llvalue
val const_struct : Llvm.llcontext -> Llvm.llvalue array -> Llvm.llvalue
val const_named_struct : Llvm.lltype -> Llvm.llvalue array -> Llvm.llvalue
val const_packed_struct :
Llvm.llcontext -> Llvm.llvalue array -> Llvm.llvalue
val const_vector : Llvm.llvalue array -> Llvm.llvalue
val align_of : Llvm.lltype -> Llvm.llvalue
val size_of : Llvm.lltype -> Llvm.llvalue
val const_neg : Llvm.llvalue -> Llvm.llvalue
val const_nsw_neg : Llvm.llvalue -> Llvm.llvalue
val const_nuw_neg : Llvm.llvalue -> Llvm.llvalue
val const_fneg : Llvm.llvalue -> Llvm.llvalue
val const_not : Llvm.llvalue -> Llvm.llvalue
val const_add : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_nsw_add : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_nuw_add : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_fadd : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_sub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_nsw_sub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_nuw_sub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_fsub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_mul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_nsw_mul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_nuw_mul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_fmul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_udiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_sdiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_exact_sdiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_fdiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_urem : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_srem : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_frem : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_and : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_or : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_xor : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_icmp :
Llvm.Icmp.t -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_fcmp :
Llvm.Fcmp.t -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_shl : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_lshr : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_ashr : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_gep : Llvm.llvalue -> Llvm.llvalue array -> Llvm.llvalue
val const_in_bounds_gep :
Llvm.llvalue -> Llvm.llvalue array -> Llvm.llvalue
val const_trunc : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_sext : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_zext : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_fptrunc : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_fpext : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_uitofp : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_sitofp : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_fptoui : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_fptosi : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_ptrtoint : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_inttoptr : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_bitcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_zext_or_bitcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_sext_or_bitcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_trunc_or_bitcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_pointercast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_intcast :
Llvm.llvalue -> Llvm.lltype -> is_signed:bool -> Llvm.llvalue
val const_fpcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
val const_select :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_extractelement : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_insertelement :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_shufflevector :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
val const_extractvalue : Llvm.llvalue -> int array -> Llvm.llvalue
val const_insertvalue :
Llvm.llvalue -> Llvm.llvalue -> int array -> Llvm.llvalue
val const_inline_asm :
Llvm.lltype -> string -> string -> bool -> bool -> Llvm.llvalue
val block_address : Llvm.llvalue -> Llvm.llbasicblock -> Llvm.llvalue
val global_parent : Llvm.llvalue -> Llvm.llmodule
val is_declaration : Llvm.llvalue -> bool
val linkage : Llvm.llvalue -> Llvm.Linkage.t
val set_linkage : Llvm.Linkage.t -> Llvm.llvalue -> unit
val section : Llvm.llvalue -> string
val set_section : string -> Llvm.llvalue -> unit
val visibility : Llvm.llvalue -> Llvm.Visibility.t
val set_visibility : Llvm.Visibility.t -> Llvm.llvalue -> unit
val alignment : Llvm.llvalue -> int
val set_alignment : int -> Llvm.llvalue -> unit
val declare_global : Llvm.lltype -> string -> Llvm.llmodule -> Llvm.llvalue
val declare_qualified_global :
Llvm.lltype -> string -> int -> Llvm.llmodule -> Llvm.llvalue
val define_global : string -> Llvm.llvalue -> Llvm.llmodule -> Llvm.llvalue
val define_qualified_global :
string -> Llvm.llvalue -> int -> Llvm.llmodule -> Llvm.llvalue
val lookup_global : string -> Llvm.llmodule -> Llvm.llvalue option
val delete_global : Llvm.llvalue -> unit
val global_begin :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
val global_succ : Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
val iter_globals : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_left_globals :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llmodule -> 'a
val global_end :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
val global_pred :
Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
val rev_iter_globals : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_right_globals :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llmodule -> 'a -> 'a
val is_global_constant : Llvm.llvalue -> bool
val set_global_constant : bool -> Llvm.llvalue -> unit
val global_initializer : Llvm.llvalue -> Llvm.llvalue
val set_initializer : Llvm.llvalue -> Llvm.llvalue -> unit
val remove_initializer : Llvm.llvalue -> unit
val is_thread_local : Llvm.llvalue -> bool
val set_thread_local : bool -> Llvm.llvalue -> unit
val thread_local_mode : Llvm.llvalue -> Llvm.ThreadLocalMode.t
val set_thread_local_mode : Llvm.ThreadLocalMode.t -> Llvm.llvalue -> unit
val is_externally_initialized : Llvm.llvalue -> bool
val set_externally_initialized : bool -> Llvm.llvalue -> unit
val add_alias :
Llvm.llmodule -> Llvm.lltype -> Llvm.llvalue -> string -> Llvm.llvalue
val declare_function :
string -> Llvm.lltype -> Llvm.llmodule -> Llvm.llvalue
val define_function :
string -> Llvm.lltype -> Llvm.llmodule -> Llvm.llvalue
val lookup_function : string -> Llvm.llmodule -> Llvm.llvalue option
val delete_function : Llvm.llvalue -> unit
val function_begin :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
val function_succ :
Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
val iter_functions : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_left_functions :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llmodule -> 'a
val function_end :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
val function_pred :
Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
val rev_iter_functions : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_right_functions :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llmodule -> 'a -> 'a
val is_intrinsic : Llvm.llvalue -> bool
val function_call_conv : Llvm.llvalue -> int
val set_function_call_conv : int -> Llvm.llvalue -> unit
val gc : Llvm.llvalue -> string option
val set_gc : string option -> Llvm.llvalue -> unit
val add_function_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
val add_target_dependent_function_attr :
Llvm.llvalue -> string -> string -> unit
val function_attr : Llvm.llvalue -> Llvm.Attribute.t list
val remove_function_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
val params : Llvm.llvalue -> Llvm.llvalue array
val param : Llvm.llvalue -> int -> Llvm.llvalue
val param_attr : Llvm.llvalue -> Llvm.Attribute.t list
val param_parent : Llvm.llvalue -> Llvm.llvalue
val param_begin : Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llpos
val param_succ : Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llpos
val iter_params : (Llvm.llvalue -> unit) -> Llvm.llvalue -> unit
val fold_left_params :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llvalue -> 'a
val param_end : Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llrev_pos
val param_pred :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llrev_pos
val rev_iter_params : (Llvm.llvalue -> unit) -> Llvm.llvalue -> unit
val fold_right_params :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llvalue -> 'a -> 'a
val add_param_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
val remove_param_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
val set_param_alignment : Llvm.llvalue -> int -> unit
val basic_blocks : Llvm.llvalue -> Llvm.llbasicblock array
val entry_block : Llvm.llvalue -> Llvm.llbasicblock
val delete_block : Llvm.llbasicblock -> unit
val remove_block : Llvm.llbasicblock -> unit
val move_block_before : Llvm.llbasicblock -> Llvm.llbasicblock -> unit
val move_block_after : Llvm.llbasicblock -> Llvm.llbasicblock -> unit
val append_block :
Llvm.llcontext -> string -> Llvm.llvalue -> Llvm.llbasicblock
val insert_block :
Llvm.llcontext -> string -> Llvm.llbasicblock -> Llvm.llbasicblock
val block_parent : Llvm.llbasicblock -> Llvm.llvalue
val block_begin :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llpos
val block_succ :
Llvm.llbasicblock -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llpos
val iter_blocks : (Llvm.llbasicblock -> unit) -> Llvm.llvalue -> unit
val fold_left_blocks :
('a -> Llvm.llbasicblock -> 'a) -> 'a -> Llvm.llvalue -> 'a
val block_end :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llrev_pos
val block_pred :
Llvm.llbasicblock -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llrev_pos
val block_terminator : Llvm.llbasicblock -> Llvm.llvalue option
val rev_iter_blocks : (Llvm.llbasicblock -> unit) -> Llvm.llvalue -> unit
val fold_right_blocks :
(Llvm.llbasicblock -> 'a -> 'a) -> Llvm.llvalue -> 'a -> 'a
val value_of_block : Llvm.llbasicblock -> Llvm.llvalue
val value_is_block : Llvm.llvalue -> bool
val block_of_value : Llvm.llvalue -> Llvm.llbasicblock
val instr_parent : Llvm.llvalue -> Llvm.llbasicblock
val delete_instruction : Llvm.llvalue -> unit
val instr_begin :
Llvm.llbasicblock -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos
val instr_succ :
Llvm.llvalue -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos
val iter_instrs : (Llvm.llvalue -> unit) -> Llvm.llbasicblock -> unit
val fold_left_instrs :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llbasicblock -> 'a
val instr_end :
Llvm.llbasicblock -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llrev_pos
val instr_pred :
Llvm.llvalue -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llrev_pos
val fold_right_instrs :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llbasicblock -> 'a -> 'a
val instr_opcode : Llvm.llvalue -> Llvm.Opcode.t
val icmp_predicate : Llvm.llvalue -> Llvm.Icmp.t option
val instruction_call_conv : Llvm.llvalue -> int
val set_instruction_call_conv : int -> Llvm.llvalue -> unit
val add_instruction_param_attr :
Llvm.llvalue -> int -> Llvm.Attribute.t -> unit
val remove_instruction_param_attr :
Llvm.llvalue -> int -> Llvm.Attribute.t -> unit
val is_tail_call : Llvm.llvalue -> bool
val set_tail_call : bool -> Llvm.llvalue -> unit
val is_volatile : Llvm.llvalue -> bool
val set_volatile : bool -> Llvm.llvalue -> unit
val add_incoming : Llvm.llvalue * Llvm.llbasicblock -> Llvm.llvalue -> unit
val incoming : Llvm.llvalue -> (Llvm.llvalue * Llvm.llbasicblock) list
val builder : Llvm.llcontext -> Llvm.llbuilder
val builder_at :
Llvm.llcontext ->
(Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos -> Llvm.llbuilder
val builder_before : Llvm.llcontext -> Llvm.llvalue -> Llvm.llbuilder
val builder_at_end : Llvm.llcontext -> Llvm.llbasicblock -> Llvm.llbuilder
val position_builder :
(Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos -> Llvm.llbuilder -> unit
val position_before : Llvm.llvalue -> Llvm.llbuilder -> unit
val position_at_end : Llvm.llbasicblock -> Llvm.llbuilder -> unit
val insertion_block : Llvm.llbuilder -> Llvm.llbasicblock
val insert_into_builder : Llvm.llvalue -> string -> Llvm.llbuilder -> unit
val set_current_debug_location : Llvm.llbuilder -> Llvm.llvalue -> unit
val clear_current_debug_location : Llvm.llbuilder -> unit
val current_debug_location : Llvm.llbuilder -> Llvm.llvalue option
val set_inst_debug_location : Llvm.llbuilder -> Llvm.llvalue -> unit
val build_ret_void : Llvm.llbuilder -> Llvm.llvalue
val build_ret : Llvm.llvalue -> Llvm.llbuilder -> Llvm.llvalue
val build_aggregate_ret :
Llvm.llvalue array -> Llvm.llbuilder -> Llvm.llvalue
val build_br : Llvm.llbasicblock -> Llvm.llbuilder -> Llvm.llvalue
val build_cond_br :
Llvm.llvalue ->
Llvm.llbasicblock -> Llvm.llbasicblock -> Llvm.llbuilder -> Llvm.llvalue
val build_switch :
Llvm.llvalue ->
Llvm.llbasicblock -> int -> Llvm.llbuilder -> Llvm.llvalue
val build_malloc : Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_array_malloc :
Llvm.lltype -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_free : Llvm.llvalue -> Llvm.llbuilder -> Llvm.llvalue
val add_case : Llvm.llvalue -> Llvm.llvalue -> Llvm.llbasicblock -> unit
val switch_default_dest : Llvm.llvalue -> Llvm.llbasicblock
val build_indirect_br :
Llvm.llvalue -> int -> Llvm.llbuilder -> Llvm.llvalue
val add_destination : Llvm.llvalue -> Llvm.llbasicblock -> unit
val build_invoke :
Llvm.llvalue ->
Llvm.llvalue array ->
Llvm.llbasicblock ->
Llvm.llbasicblock -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_landingpad :
Llvm.lltype ->
Llvm.llvalue -> int -> string -> Llvm.llbuilder -> Llvm.llvalue
val set_cleanup : Llvm.llvalue -> bool -> unit
val add_clause : Llvm.llvalue -> Llvm.llvalue -> unit
val build_resume : Llvm.llvalue -> Llvm.llbuilder -> Llvm.llvalue
val build_unreachable : Llvm.llbuilder -> Llvm.llvalue
val build_add :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nsw_add :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nuw_add :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fadd :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_sub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nsw_sub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nuw_sub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fsub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_mul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nsw_mul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nuw_mul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fmul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_udiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_sdiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_exact_sdiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fdiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_urem :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_srem :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_frem :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_shl :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_lshr :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_ashr :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_and :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_or :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_xor :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_neg : Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nsw_neg :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_nuw_neg :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fneg : Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_not : Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_alloca : Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_array_alloca :
Llvm.lltype -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_load : Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_store :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llbuilder -> Llvm.llvalue
val build_atomicrmw :
Llvm.AtomicRMWBinOp.t ->
Llvm.llvalue ->
Llvm.llvalue ->
Llvm.AtomicOrdering.t -> bool -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_gep :
Llvm.llvalue ->
Llvm.llvalue array -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_in_bounds_gep :
Llvm.llvalue ->
Llvm.llvalue array -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_struct_gep :
Llvm.llvalue -> int -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_global_string :
string -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_global_stringptr :
string -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_trunc :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_zext :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_sext :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fptoui :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fptosi :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_uitofp :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_sitofp :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fptrunc :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fpext :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_ptrtoint :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_inttoptr :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_zext_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_sext_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_trunc_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_pointercast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_intcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fpcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_icmp :
Llvm.Icmp.t ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_fcmp :
Llvm.Fcmp.t ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_phi :
(Llvm.llvalue * Llvm.llbasicblock) list ->
string -> Llvm.llbuilder -> Llvm.llvalue
val build_call :
Llvm.llvalue ->
Llvm.llvalue array -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_select :
Llvm.llvalue ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_va_arg :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_extractelement :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_insertelement :
Llvm.llvalue ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_shufflevector :
Llvm.llvalue ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_extractvalue :
Llvm.llvalue -> int -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_insertvalue :
Llvm.llvalue ->
Llvm.llvalue -> int -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_is_null :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_is_not_null :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
val build_ptrdiff :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
module MemoryBuffer :
sig
val of_file : string -> Llvm.llmemorybuffer
val of_stdin : unit -> Llvm.llmemorybuffer
val of_string : ?name:string -> string -> Llvm.llmemorybuffer
val as_string : Llvm.llmemorybuffer -> string
val dispose : Llvm.llmemorybuffer -> unit
end
module PassManager :
sig
type 'a t
type any = [ `Function | `Module ]
val create : unit -> [ `Module ] Llvm.PassManager.t
val create_function : Llvm.llmodule -> [ `Function ] Llvm.PassManager.t
val run_module :
Llvm.llmodule -> [ `Module ] Llvm.PassManager.t -> bool
val initialize : [ `Function ] Llvm.PassManager.t -> bool
val run_function :
Llvm.llvalue -> [ `Function ] Llvm.PassManager.t -> bool
val finalize : [ `Function ] Llvm.PassManager.t -> bool
val dispose : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
end
end