sig   type llcontext   type llmodule   type lltype   type llvalue   type lluse   type llbasicblock   type llbuilder   type llattrkind   type llattribute   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 AttrRepr :     sig       type t = Enum of Llvm.llattrkind * int64 | String of string * string     end   module AttrIndex : sig type t = Function | Return | Param of int 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   module DiagnosticSeverity :     sig type t = Error | Warning | Remark | Note end   type ('a, 'b) llpos = At_end of '| Before of 'b   type ('a, 'b) llrev_pos = At_start of '| After of 'b   exception FeatureDisabled of string   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   module Diagnostic :     sig       type t       val description : Llvm.Diagnostic.t -> string       val severity : Llvm.Diagnostic.t -> Llvm.DiagnosticSeverity.t     end   val set_diagnostic_handler :     Llvm.llcontext -> (Llvm.Diagnostic.t -> unit) option -> 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   exception UnknownAttribute of string   val enum_attr_kind : string -> Llvm.llattrkind   val create_enum_attr :     Llvm.llcontext -> string -> int64 -> Llvm.llattribute   val create_string_attr :     Llvm.llcontext -> string -> string -> Llvm.llattribute   val attr_of_repr : Llvm.llcontext -> Llvm.AttrRepr.t -> Llvm.llattribute   val repr_of_attr : Llvm.llattribute -> Llvm.AttrRepr.t   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 subtypes : Llvm.lltype -> Llvm.lltype array   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 : ('-> Llvm.lluse -> 'a) -> '-> Llvm.llvalue -> 'a   val fold_right_uses : (Llvm.lluse -> '-> 'a) -> Llvm.llvalue -> '-> '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_mdnode_operands : Llvm.llvalue -> Llvm.llvalue array   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 :     ('-> Llvm.llvalue -> '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) -> Llvm.llmodule -> '-> '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 :     ('-> Llvm.llvalue -> '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) -> Llvm.llmodule -> '-> '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.llattribute -> Llvm.AttrIndex.t -> unit   val function_attrs :     Llvm.llvalue -> Llvm.AttrIndex.t -> Llvm.llattribute array   val remove_enum_function_attr :     Llvm.llvalue -> Llvm.llattrkind -> Llvm.AttrIndex.t -> unit   val remove_string_function_attr :     Llvm.llvalue -> string -> Llvm.AttrIndex.t -> unit   val params : Llvm.llvalue -> Llvm.llvalue array   val param : Llvm.llvalue -> int -> Llvm.llvalue   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 :     ('-> Llvm.llvalue -> '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) -> Llvm.llvalue -> '-> 'a   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 :     ('-> Llvm.llbasicblock -> '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) -> Llvm.llvalue -> '-> '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 :     ('-> Llvm.llvalue -> '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) -> Llvm.llbasicblock -> '-> '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_call_site_attr :     Llvm.llvalue -> Llvm.llattribute -> Llvm.AttrIndex.t -> unit   val call_site_attrs :     Llvm.llvalue -> Llvm.AttrIndex.t -> Llvm.llattribute array   val remove_enum_call_site_attr :     Llvm.llvalue -> Llvm.llattrkind -> Llvm.AttrIndex.t -> unit   val remove_string_call_site_attr :     Llvm.llvalue -> string -> Llvm.AttrIndex.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) -> Llvm.llvalue -> '-> '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