| (*===-- llvm_debuginfo.ml - LLVM OCaml Interface --------------*- OCaml -*-===* | 
 |  * | 
 |  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
 |  * See https://llvm.org/LICENSE.txt for license information. | 
 |  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
 |  * | 
 |  *===----------------------------------------------------------------------===*) | 
 |  | 
 | type lldibuilder | 
 |  | 
 | (** Source languages known by DWARF. *) | 
 | module DWARFSourceLanguageKind = struct | 
 |   type t = | 
 |     | C89 | 
 |     | C | 
 |     | Ada83 | 
 |     | C_plus_plus | 
 |     | Cobol74 | 
 |     | Cobol85 | 
 |     | Fortran77 | 
 |     | Fortran90 | 
 |     | Pascal83 | 
 |     | Modula2 | 
 |     (*  New in DWARF v3: *) | 
 |     | LLVMJava | 
 |     | C99 | 
 |     | Ada95 | 
 |     | Fortran95 | 
 |     | PLI | 
 |     | ObjC | 
 |     | ObjC_plus_plus | 
 |     | UPC | 
 |     | D | 
 |     (*  New in DWARF v4: *) | 
 |     | LLVMPython | 
 |     (*  New in DWARF v5: *) | 
 |     | LLVMOpenCL | 
 |     | Go | 
 |     | Modula3 | 
 |     | Haskell | 
 |     | C_plus_plus_03 | 
 |     | C_plus_plus_11 | 
 |     | OCaml | 
 |     | Rust | 
 |     | C11 | 
 |     | Swift | 
 |     | Julia | 
 |     | Dylan | 
 |     | C_plus_plus_14 | 
 |     | Fortran03 | 
 |     | Fortran08 | 
 |     | RenderScript | 
 |     | BLISS | 
 |     (*  Vendor extensions: *) | 
 |     | LLVMMips_Assembler | 
 |     | GOOGLE_RenderScript | 
 |     | BORLAND_Delphi | 
 | end | 
 |  | 
 | module DIFlag = struct | 
 |   type t = | 
 |     | Zero | 
 |     | Private | 
 |     | Protected | 
 |     | Public | 
 |     | FwdDecl | 
 |     | AppleBlock | 
 |     | ReservedBit4 | 
 |     | Virtual | 
 |     | Artificial | 
 |     | Explicit | 
 |     | Prototyped | 
 |     | ObjcClassComplete | 
 |     | ObjectPointer | 
 |     | Vector | 
 |     | StaticMember | 
 |     | LValueReference | 
 |     | RValueReference | 
 |     | Reserved | 
 |     | SingleInheritance | 
 |     | MultipleInheritance | 
 |     | VirtualInheritance | 
 |     | IntroducedVirtual | 
 |     | BitField | 
 |     | NoReturn | 
 |     | TypePassByValue | 
 |     | TypePassByReference | 
 |     | EnumClass | 
 |     | FixedEnum | 
 |     | Thunk | 
 |     | NonTrivial | 
 |     | BigEndian | 
 |     | LittleEndian | 
 |     | IndirectVirtualBase | 
 |     | Accessibility | 
 |     | PtrToMemberRep | 
 | end | 
 |  | 
 | type lldiflags | 
 |  | 
 | external diflags_get : DIFlag.t -> lldiflags = "llvm_diflags_get" | 
 |  | 
 | external diflags_set : lldiflags -> DIFlag.t -> lldiflags = "llvm_diflags_set" | 
 |  | 
 | external diflags_test : lldiflags -> DIFlag.t -> bool = "llvm_diflags_test" | 
 |  | 
 | (** The kind of metadata nodes. *) | 
 | module MetadataKind = struct | 
 |   type t = | 
 |     | MDStringMetadataKind | 
 |     | ConstantAsMetadataMetadataKind | 
 |     | LocalAsMetadataMetadataKind | 
 |     | DistinctMDOperandPlaceholderMetadataKind | 
 |     | MDTupleMetadataKind | 
 |     | DILocationMetadataKind | 
 |     | DIExpressionMetadataKind | 
 |     | DIGlobalVariableExpressionMetadataKind | 
 |     | GenericDINodeMetadataKind | 
 |     | DISubrangeMetadataKind | 
 |     | DIEnumeratorMetadataKind | 
 |     | DIBasicTypeMetadataKind | 
 |     | DIDerivedTypeMetadataKind | 
 |     | DICompositeTypeMetadataKind | 
 |     | DISubroutineTypeMetadataKind | 
 |     | DIFileMetadataKind | 
 |     | DICompileUnitMetadataKind | 
 |     | DISubprogramMetadataKind | 
 |     | DILexicalBlockMetadataKind | 
 |     | DILexicalBlockFileMetadataKind | 
 |     | DINamespaceMetadataKind | 
 |     | DIModuleMetadataKind | 
 |     | DITemplateTypeParameterMetadataKind | 
 |     | DITemplateValueParameterMetadataKind | 
 |     | DIGlobalVariableMetadataKind | 
 |     | DILocalVariableMetadataKind | 
 |     | DILabelMetadataKind | 
 |     | DIObjCPropertyMetadataKind | 
 |     | DIImportedEntityMetadataKind | 
 |     | DIMacroMetadataKind | 
 |     | DIMacroFileMetadataKind | 
 |     | DICommonBlockMetadataKind | 
 | end | 
 |  | 
 | (** The amount of debug information to emit. *) | 
 | module DWARFEmissionKind = struct | 
 |   type t = None | Full | LineTablesOnly | 
 | end | 
 |  | 
 | external debug_metadata_version : unit -> int = "llvm_debug_metadata_version" | 
 |  | 
 | external get_module_debug_metadata_version : Llvm.llmodule -> int | 
 |   = "llvm_get_module_debug_metadata_version" | 
 |  | 
 | external dibuilder : Llvm.llmodule -> lldibuilder = "llvm_dibuilder" | 
 |  | 
 | external dibuild_finalize : lldibuilder -> unit = "llvm_dibuild_finalize" | 
 |  | 
 | (* See LLVMDIBuilderCreateCompileUnit for argument details. *) | 
 | external dibuild_create_compile_unit : | 
 |   lldibuilder -> | 
 |   DWARFSourceLanguageKind.t -> | 
 |   file_ref:Llvm.llmetadata -> | 
 |   producer:string -> | 
 |   is_optimized:bool -> | 
 |   flags:string -> | 
 |   runtime_ver:int -> | 
 |   split_name:string -> | 
 |   DWARFEmissionKind.t -> | 
 |   dwoid:int -> | 
 |   di_inlining:bool -> | 
 |   di_profiling:bool -> | 
 |   sys_root:string -> | 
 |   sdk:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_compile_unit_bytecode" "llvm_dibuild_create_compile_unit_native" | 
 |  | 
 | external dibuild_create_file : | 
 |   lldibuilder -> filename:string -> directory:string -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_file" | 
 |  | 
 | external dibuild_create_module : | 
 |   lldibuilder -> | 
 |   parent_ref:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   config_macros:string -> | 
 |   include_path:string -> | 
 |   sys_root:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_module_bytecode" "llvm_dibuild_create_module_native" | 
 |  | 
 | external dibuild_create_namespace : | 
 |   lldibuilder -> | 
 |   parent_ref:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   export_symbols:bool -> | 
 |   Llvm.llmetadata = "llvm_dibuild_create_namespace" | 
 |  | 
 | external dibuild_create_function : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   linkage_name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_no:int -> | 
 |   ty:Llvm.llmetadata -> | 
 |   is_local_to_unit:bool -> | 
 |   is_definition:bool -> | 
 |   scope_line:int -> | 
 |   flags:lldiflags -> | 
 |   is_optimized:bool -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_function_bytecode" "llvm_dibuild_create_function_native" | 
 |  | 
 | external dibuild_create_lexical_block : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   file:Llvm.llmetadata -> | 
 |   line:int -> | 
 |   column:int -> | 
 |   Llvm.llmetadata = "llvm_dibuild_create_lexical_block" | 
 |  | 
 | external dibuild_create_debug_location_helper : | 
 |   Llvm.llcontext -> | 
 |   line:int -> | 
 |   column:int -> | 
 |   scope:Llvm.llmetadata -> | 
 |   inlined_at:Llvm.llmetadata -> | 
 |   Llvm.llmetadata = "llvm_dibuild_create_debug_location" | 
 |  | 
 | external llmetadata_null : unit -> Llvm.llmetadata = "llvm_metadata_null" | 
 |  | 
 | let dibuild_create_debug_location ?(inlined_at = llmetadata_null ()) llctx ~line | 
 |     ~column ~scope = | 
 |   dibuild_create_debug_location_helper llctx line column scope inlined_at | 
 |  | 
 | external di_location_get_line : location:Llvm.llmetadata -> int | 
 |   = "llvm_di_location_get_line" | 
 |  | 
 | external di_location_get_column : location:Llvm.llmetadata -> int | 
 |   = "llvm_di_location_get_column" | 
 |  | 
 | external di_location_get_scope : location:Llvm.llmetadata -> Llvm.llmetadata | 
 |   = "llvm_di_location_get_scope" | 
 |  | 
 | external di_location_get_inlined_at : | 
 |   location:Llvm.llmetadata -> Llvm.llmetadata option | 
 |   = "llvm_di_location_get_inlined_at" | 
 |  | 
 | external di_scope_get_file : scope:Llvm.llmetadata -> Llvm.llmetadata option | 
 |   = "llvm_di_scope_get_file" | 
 |  | 
 | external di_file_get_directory : file:Llvm.llmetadata -> string | 
 |   = "llvm_di_file_get_directory" | 
 |  | 
 | external di_file_get_filename : file:Llvm.llmetadata -> string | 
 |   = "llvm_di_file_get_filename" | 
 |  | 
 | external di_file_get_source : file:Llvm.llmetadata -> string | 
 |   = "llvm_di_file_get_source" | 
 |  | 
 | external dibuild_get_or_create_type_array : | 
 |   lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata | 
 |   = "llvm_dibuild_get_or_create_type_array" | 
 |  | 
 | external dibuild_get_or_create_array : | 
 |   lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata | 
 |   = "llvm_dibuild_get_or_create_array" | 
 |  | 
 | external dibuild_create_subroutine_type : | 
 |   lldibuilder -> | 
 |   file:Llvm.llmetadata -> | 
 |   param_types:Llvm.llmetadata array -> | 
 |   lldiflags -> | 
 |   Llvm.llmetadata = "llvm_dibuild_create_subroutine_type" | 
 |  | 
 | external dibuild_create_enumerator : | 
 |   lldibuilder -> name:string -> value:int -> is_unsigned:bool -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_enumerator" | 
 |  | 
 | external dibuild_create_enumeration_type : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_number:int -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   elements:Llvm.llmetadata array -> | 
 |   class_ty:Llvm.llmetadata -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_enumeration_type_bytecode" "llvm_dibuild_create_enumeration_type_native" | 
 |  | 
 | external dibuild_create_union_type : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_number:int -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   lldiflags -> | 
 |   elements:Llvm.llmetadata array -> | 
 |   run_time_language:int -> | 
 |   unique_id:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_union_type_bytecode" "llvm_dibuild_create_union_type_native" | 
 |  | 
 | external dibuild_create_array_type : | 
 |   lldibuilder -> | 
 |   size:int -> | 
 |   align_in_bits:int -> | 
 |   ty:Llvm.llmetadata -> | 
 |   subscripts:Llvm.llmetadata array -> | 
 |   Llvm.llmetadata = "llvm_dibuild_create_array_type" | 
 |  | 
 | external dibuild_create_vector_type : | 
 |   lldibuilder -> | 
 |   size:int -> | 
 |   align_in_bits:int -> | 
 |   ty:Llvm.llmetadata -> | 
 |   subscripts:Llvm.llmetadata array -> | 
 |   Llvm.llmetadata = "llvm_dibuild_create_array_type" | 
 |  | 
 | external dibuild_create_unspecified_type : | 
 |   lldibuilder -> name:string -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_unspecified_type" | 
 |  | 
 | external dibuild_create_basic_type : | 
 |   lldibuilder -> | 
 |   name:string -> | 
 |   size_in_bits:int -> | 
 |   encoding:int -> | 
 |   lldiflags -> | 
 |   Llvm.llmetadata = "llvm_dibuild_create_basic_type" | 
 |  | 
 | external dibuild_create_pointer_type : | 
 |   lldibuilder -> | 
 |   pointee_ty:Llvm.llmetadata -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   address_space:int -> | 
 |   name:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_pointer_type_bytecode" "llvm_dibuild_create_pointer_type_native" | 
 |  | 
 | external dibuild_create_struct_type : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_number:int -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   lldiflags -> | 
 |   derived_from:Llvm.llmetadata -> | 
 |   elements:Llvm.llmetadata array -> | 
 |   DWARFSourceLanguageKind.t -> | 
 |   vtable_holder:Llvm.llmetadata -> | 
 |   unique_id:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_struct_type_bytecode" "llvm_dibuild_create_struct_type_native" | 
 |  | 
 | external dibuild_create_member_type : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_number:int -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   offset_in_bits:int -> | 
 |   lldiflags -> | 
 |   ty:Llvm.llmetadata -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_member_type_bytecode" "llvm_dibuild_create_member_type_native" | 
 |  | 
 | external dibuild_create_static_member_type : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_number:int -> | 
 |   ty:Llvm.llmetadata -> | 
 |   lldiflags -> | 
 |   const_val:Llvm.llvalue -> | 
 |   align_in_bits:int -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_static_member_type_bytecode" "llvm_dibuild_create_static_member_type_native" | 
 |  | 
 | external dibuild_create_member_pointer_type : | 
 |   lldibuilder -> | 
 |   pointee_type:Llvm.llmetadata -> | 
 |   class_type:Llvm.llmetadata -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   lldiflags -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_member_pointer_type_bytecode" "llvm_dibuild_create_member_pointer_type_native" | 
 |  | 
 | external dibuild_create_object_pointer_type : | 
 |   lldibuilder -> Llvm.llmetadata -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_object_pointer_type" | 
 |  | 
 | external dibuild_create_qualified_type : | 
 |   lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_qualified_type" | 
 |  | 
 | external dibuild_create_reference_type : | 
 |   lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_reference_type" | 
 |  | 
 | external dibuild_create_null_ptr_type : lldibuilder -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_null_ptr_type" | 
 |  | 
 | external dibuild_create_typedef : | 
 |   lldibuilder -> | 
 |   ty:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_no:int -> | 
 |   scope:Llvm.llmetadata -> | 
 |   align_in_bits:int -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_typedef_bytecode" "llvm_dibuild_create_typedef_native" | 
 |  | 
 | external dibuild_create_inheritance : | 
 |   lldibuilder -> | 
 |   ty:Llvm.llmetadata -> | 
 |   base_ty:Llvm.llmetadata -> | 
 |   base_offset:int -> | 
 |   vb_ptr_offset:int -> | 
 |   lldiflags -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_inheritance_bytecode" "llvm_dibuild_create_inheritance_native" | 
 |  | 
 | external dibuild_create_forward_decl : | 
 |   lldibuilder -> | 
 |   tag:int -> | 
 |   name:string -> | 
 |   scope:Llvm.llmetadata -> | 
 |   file:Llvm.llmetadata -> | 
 |   line:int -> | 
 |   runtime_lang:int -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   unique_identifier:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_forward_decl_bytecode" "llvm_dibuild_create_forward_decl_native" | 
 |  | 
 | external dibuild_create_replaceable_composite_type : | 
 |   lldibuilder -> | 
 |   tag:int -> | 
 |   name:string -> | 
 |   scope:Llvm.llmetadata -> | 
 |   file:Llvm.llmetadata -> | 
 |   line:int -> | 
 |   runtime_lang:int -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   lldiflags -> | 
 |   unique_identifier:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_replaceable_composite_type_bytecode" "llvm_dibuild_create_replaceable_composite_type_native" | 
 |  | 
 | external dibuild_create_bit_field_member_type : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_num:int -> | 
 |   size_in_bits:int -> | 
 |   offset_in_bits:int -> | 
 |   storage_offset_in_bits:int -> | 
 |   lldiflags -> | 
 |   ty:Llvm.llmetadata -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_bit_field_member_type_bytecode" "llvm_dibuild_create_bit_field_member_type_native" | 
 |  | 
 | external dibuild_create_class_type : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line_number:int -> | 
 |   size_in_bits:int -> | 
 |   align_in_bits:int -> | 
 |   offset_in_bits:int -> | 
 |   lldiflags -> | 
 |   derived_from:Llvm.llmetadata -> | 
 |   elements:Llvm.llmetadata array -> | 
 |   vtable_holder:Llvm.llmetadata -> | 
 |   template_params_node:Llvm.llmetadata -> | 
 |   unique_identifier:string -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_class_type_bytecode" "llvm_dibuild_create_class_type_native" | 
 |  | 
 | external dibuild_create_artificial_type : | 
 |   lldibuilder -> ty:Llvm.llmetadata -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_artificial_type" | 
 |  | 
 | external di_type_get_name : Llvm.llmetadata -> string = "llvm_di_type_get_name" | 
 |  | 
 | external di_type_get_size_in_bits : Llvm.llmetadata -> int | 
 |   = "llvm_di_type_get_size_in_bits" | 
 |  | 
 | external di_type_get_offset_in_bits : Llvm.llmetadata -> int | 
 |   = "llvm_di_type_get_offset_in_bits" | 
 |  | 
 | external di_type_get_align_in_bits : Llvm.llmetadata -> int | 
 |   = "llvm_di_type_get_align_in_bits" | 
 |  | 
 | external di_type_get_line : Llvm.llmetadata -> int = "llvm_di_type_get_line" | 
 |  | 
 | external di_type_get_flags : Llvm.llmetadata -> lldiflags | 
 |   = "llvm_di_type_get_flags" | 
 |  | 
 | external get_subprogram : Llvm.llvalue -> Llvm.llmetadata option | 
 |   = "llvm_get_subprogram" | 
 |  | 
 | external set_subprogram : Llvm.llvalue -> Llvm.llmetadata -> unit | 
 |   = "llvm_set_subprogram" | 
 |  | 
 | external di_subprogram_get_line : Llvm.llmetadata -> int | 
 |   = "llvm_di_subprogram_get_line" | 
 |  | 
 | external instr_get_debug_loc : Llvm.llvalue -> Llvm.llmetadata option | 
 |   = "llvm_instr_get_debug_loc" | 
 |  | 
 | external instr_set_debug_loc_helper : Llvm.llvalue -> Llvm.llmetadata -> unit | 
 |   = "llvm_instr_set_debug_loc" | 
 |  | 
 | let instr_set_debug_loc i mopt = | 
 |   match mopt with | 
 |   | None -> instr_set_debug_loc_helper i (llmetadata_null ()) | 
 |   | Some m -> instr_set_debug_loc_helper i m | 
 |  | 
 | external dibuild_create_constant_value_expression : | 
 |   lldibuilder -> int -> Llvm.llmetadata | 
 |   = "llvm_dibuild_create_constant_value_expression" | 
 |  | 
 | external dibuild_create_global_variable_expression : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   linkage:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line:int -> | 
 |   ty:Llvm.llmetadata -> | 
 |   is_local_to_unit:bool -> | 
 |   expr:Llvm.llmetadata -> | 
 |   decl:Llvm.llmetadata -> | 
 |   align_in_bits:int -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_global_variable_expression_bytecode" "llvm_dibuild_create_global_variable_expression_native" | 
 |  | 
 | external di_global_variable_expression_get_variable : | 
 |   Llvm.llmetadata -> Llvm.llmetadata option | 
 |   = "llvm_di_global_variable_expression_get_variable" | 
 |  | 
 | external di_variable_get_line : Llvm.llmetadata -> int | 
 |   = "llvm_di_variable_get_line" | 
 |  | 
 | external di_variable_get_file : Llvm.llmetadata -> Llvm.llmetadata option | 
 |   = "llvm_di_variable_get_file" | 
 |  | 
 | external get_metadata_kind : Llvm.llmetadata -> MetadataKind.t | 
 |   = "llvm_get_metadata_kind" | 
 |  | 
 | external dibuild_create_auto_variable : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   file:Llvm.llmetadata -> | 
 |   line:int -> | 
 |   ty:Llvm.llmetadata -> | 
 |   always_preserve:bool -> | 
 |   lldiflags -> | 
 |   align_in_bits:int -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_auto_variable_bytecode" "llvm_dibuild_create_auto_variable_native" | 
 |  | 
 | external dibuild_create_parameter_variable : | 
 |   lldibuilder -> | 
 |   scope:Llvm.llmetadata -> | 
 |   name:string -> | 
 |   argno:int -> | 
 |   file:Llvm.llmetadata -> | 
 |   line:int -> | 
 |   ty:Llvm.llmetadata -> | 
 |   always_preserve:bool -> | 
 |   lldiflags -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_create_parameter_variable_bytecode" "llvm_dibuild_create_parameter_variable_native" | 
 |  | 
 | external dibuild_insert_declare_before : | 
 |   lldibuilder -> | 
 |   storage:Llvm.llvalue -> | 
 |   var_info:Llvm.llmetadata -> | 
 |   expr:Llvm.llmetadata -> | 
 |   location:Llvm.llmetadata -> | 
 |   instr:Llvm.llvalue -> | 
 |   Llvm.llvalue | 
 |   = "llvm_dibuild_insert_declare_before_bytecode" "llvm_dibuild_insert_declare_before_native" | 
 |  | 
 | external dibuild_insert_declare_at_end : | 
 |   lldibuilder -> | 
 |   storage:Llvm.llvalue -> | 
 |   var_info:Llvm.llmetadata -> | 
 |   expr:Llvm.llmetadata -> | 
 |   location:Llvm.llmetadata -> | 
 |   block:Llvm.llbasicblock -> | 
 |   Llvm.llvalue | 
 |   = "llvm_dibuild_insert_declare_at_end_bytecode" "llvm_dibuild_insert_declare_at_end_native" | 
 |  | 
 | external dibuild_expression : | 
 |   lldibuilder -> | 
 |   Int64.t array -> | 
 |   Llvm.llmetadata | 
 |   = "llvm_dibuild_expression" |