Llvm

`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 DLLStorageClass : sig type t = Default | DLLImport | DLLExport 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 parse_command_line_options : ?overview:string -> string array -> 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 operand_use : Llvm.llvalue -> int -> Llvm.lluse 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 mdnull : Llvm.llcontext -> 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 float_of_const : Llvm.llvalue -> float option 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 string_of_const : Llvm.llvalue -> string option val const_element : Llvm.llvalue -> int -> 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 unnamed_addr : Llvm.llvalue -> bool val set_unnamed_addr : bool -> 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 dll_storage_class : Llvm.llvalue -> Llvm.DLLStorageClass.t val set_dll_storage_class : Llvm.DLLStorageClass.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 fcmp_predicate : Llvm.llvalue -> Llvm.Fcmp.t option val instr_clone : Llvm.llvalue -> Llvm.llvalue 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 is_terminator : Llvm.llvalue -> bool val successor : Llvm.llvalue -> int -> Llvm.llbasicblock val set_successor : Llvm.llvalue -> int -> Llvm.llbasicblock -> unit val num_successors : Llvm.llvalue -> int val successors : Llvm.llvalue -> Llvm.llbasicblock array val iter_successors : (Llvm.llbasicblock -> unit) -> Llvm.llvalue -> unit val fold_successors : (Llvm.llbasicblock -> 'a -> 'a) -> Llvm.llvalue -> 'a -> 'a val is_conditional : Llvm.llvalue -> bool val condition : Llvm.llvalue -> Llvm.llvalue val set_condition : Llvm.llvalue -> Llvm.llvalue -> unit val get_branch : Llvm.llvalue -> [ `Conditional of Llvm.llvalue * Llvm.llbasicblock * Llvm.llbasicblock | `Unconditional of Llvm.llbasicblock ] option 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_empty_phi : Llvm.lltype -> 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`