696 lines · plain
1(*===-- llvm_debuginfo.mli - LLVM OCaml Interface -------------*- OCaml -*-===*2 *3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4 * See https://llvm.org/LICENSE.txt for license information.5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6 *7 *===----------------------------------------------------------------------===*)8 9type lldibuilder10 11(** Source languages known by DWARF. *)12module DWARFSourceLanguageKind : sig13 type t =14 | C8915 | C16 | Ada8317 | C_plus_plus18 | Cobol7419 | Cobol8520 | Fortran7721 | Fortran9022 | Pascal8323 | Modula224 (* New in DWARF v3: *)25 | LLVMJava26 | C9927 | Ada9528 | Fortran9529 | PLI30 | ObjC31 | ObjC_plus_plus32 | UPC33 | D34 (* New in DWARF v4: *)35 | LLVMPython36 (* New in DWARF v5: *)37 | LLVMOpenCL38 | Go39 | Modula340 | Haskell41 | C_plus_plus_0342 | C_plus_plus_1143 | OCaml44 | Rust45 | C1146 | Swift47 | Julia48 | Dylan49 | C_plus_plus_1450 | Fortran0351 | Fortran0852 | RenderScript53 | BLISS54 (* Vendor extensions: *)55 | LLVMMips_Assembler56 | GOOGLE_RenderScript57 | BORLAND_Delphi58end59 60module DIFlag : sig61 type t =62 | Zero63 | Private64 | Protected65 | Public66 | FwdDecl67 | AppleBlock68 | ReservedBit469 | Virtual70 | Artificial71 | Explicit72 | Prototyped73 | ObjcClassComplete74 | ObjectPointer75 | Vector76 | StaticMember77 | LValueReference78 | RValueReference79 | Reserved80 | SingleInheritance81 | MultipleInheritance82 | VirtualInheritance83 | IntroducedVirtual84 | BitField85 | NoReturn86 | TypePassByValue87 | TypePassByReference88 | EnumClass89 | FixedEnum90 | Thunk91 | NonTrivial92 | BigEndian93 | LittleEndian94 | IndirectVirtualBase95 | Accessibility96 | PtrToMemberRep97end98 99type lldiflags100(** An opaque type to represent OR of multiple DIFlag.t. *)101 102val diflags_get : DIFlag.t -> lldiflags103(** [diflags_set f] Construct an lldiflags value with a single flag [f]. *)104 105val diflags_set : lldiflags -> DIFlag.t -> lldiflags106(** [diflags_set fs f] Include flag [f] in [fs] and return the new value. *)107 108val diflags_test : lldiflags -> DIFlag.t -> bool109(** [diflags_test fs f] Does [fs] contain flag [f]? *)110 111(** The kind of metadata nodes. *)112module MetadataKind : sig113 type t =114 | MDStringMetadataKind115 | ConstantAsMetadataMetadataKind116 | LocalAsMetadataMetadataKind117 | DistinctMDOperandPlaceholderMetadataKind118 | MDTupleMetadataKind119 | DILocationMetadataKind120 | DIExpressionMetadataKind121 | DIGlobalVariableExpressionMetadataKind122 | GenericDINodeMetadataKind123 | DISubrangeMetadataKind124 | DIEnumeratorMetadataKind125 | DIBasicTypeMetadataKind126 | DIDerivedTypeMetadataKind127 | DICompositeTypeMetadataKind128 | DISubroutineTypeMetadataKind129 | DIFileMetadataKind130 | DICompileUnitMetadataKind131 | DISubprogramMetadataKind132 | DILexicalBlockMetadataKind133 | DILexicalBlockFileMetadataKind134 | DINamespaceMetadataKind135 | DIModuleMetadataKind136 | DITemplateTypeParameterMetadataKind137 | DITemplateValueParameterMetadataKind138 | DIGlobalVariableMetadataKind139 | DILocalVariableMetadataKind140 | DILabelMetadataKind141 | DIObjCPropertyMetadataKind142 | DIImportedEntityMetadataKind143 | DIMacroMetadataKind144 | DIMacroFileMetadataKind145 | DICommonBlockMetadataKind146 | DIStringTypeMetadataKind147 | DIGenericSubrangeMetadataKind148 | DIArgListMetadataKind149 | DIAssignIDMetadataKind150 | DISubrangeTypeMetadataKind151 | DIFixedPointTypeMetadataKind152end153 154(** The amount of debug information to emit. *)155module DWARFEmissionKind : sig156 type t = None | Full | LineTablesOnly157end158 159val debug_metadata_version : unit -> int160(** [debug_metadata_version ()] The current debug metadata version number *)161 162val get_module_debug_metadata_version : Llvm.llmodule -> int163(** [get_module_debug_metadata_version m] Version of metadata present in [m]. *)164 165val dibuilder : Llvm.llmodule -> lldibuilder166(** [dibuilder m] Create a debug info builder for [m]. *)167 168val dibuild_finalize : lldibuilder -> unit169(** [dibuild_finalize dib] Construct any deferred debug info descriptors. *)170 171val dibuild_create_compile_unit :172 lldibuilder ->173 DWARFSourceLanguageKind.t ->174 file_ref:Llvm.llmetadata ->175 producer:string ->176 is_optimized:bool ->177 flags:string ->178 runtime_ver:int ->179 split_name:string ->180 DWARFEmissionKind.t ->181 dwoid:int ->182 di_inlining:bool ->183 di_profiling:bool ->184 sys_root:string ->185 sdk:string ->186 Llvm.llmetadata187(** [dibuild_create_compile_unit] A CompileUnit provides an anchor for all188 debugging information generated during this instance of compilation.189 See LLVMDIBuilderCreateCompileUnit. *)190 191val dibuild_create_file :192 lldibuilder -> filename:string -> directory:string -> Llvm.llmetadata193(** [dibuild_create_file] Create a file descriptor to hold debugging information194 for a file. See LLVMDIBuilderCreateFile. *)195 196val dibuild_create_module :197 lldibuilder ->198 parent_ref:Llvm.llmetadata ->199 name:string ->200 config_macros:string ->201 include_path:string ->202 sys_root:string ->203 Llvm.llmetadata204(** [dibuild_create_module] Create a new descriptor for a module with the205 specified parent scope. See LLVMDIBuilderCreateModule. *)206 207val dibuild_create_namespace :208 lldibuilder ->209 parent_ref:Llvm.llmetadata ->210 name:string ->211 export_symbols:bool ->212 Llvm.llmetadata213(** [dibuild_create_namespace] Create a new descriptor for a namespace with214 the specified parent scope. See LLVMDIBuilderCreateNameSpace *)215 216val dibuild_create_function :217 lldibuilder ->218 scope:Llvm.llmetadata ->219 name:string ->220 linkage_name:string ->221 file:Llvm.llmetadata ->222 line_no:int ->223 ty:Llvm.llmetadata ->224 is_local_to_unit:bool ->225 is_definition:bool ->226 scope_line:int ->227 flags:lldiflags ->228 is_optimized:bool ->229 Llvm.llmetadata230(** [dibuild_create_function] Create a new descriptor for the specified231 subprogram. See LLVMDIBuilderCreateFunction. *)232 233val dibuild_create_lexical_block :234 lldibuilder ->235 scope:Llvm.llmetadata ->236 file:Llvm.llmetadata ->237 line:int ->238 column:int ->239 Llvm.llmetadata240(** [dibuild_create_lexical_block] Create a descriptor for a lexical block with241 the specified parent context. See LLVMDIBuilderCreateLexicalBlock *)242 243val llmetadata_null : unit -> Llvm.llmetadata244(** [llmetadata_null ()] llmetadata is a wrapper around "llvm::Metadata *".245 This function returns a nullptr valued llmetadata. For example, it246 can be used to convey an llmetadata for "void" type. *)247 248val dibuild_create_debug_location :249 ?inlined_at:Llvm.llmetadata ->250 Llvm.llcontext ->251 line:int ->252 column:int ->253 scope:Llvm.llmetadata ->254 Llvm.llmetadata255(** [dibuild_create] Create a new DebugLocation that describes a source256 location. See LLVMDIBuilderCreateDebugLocation *)257 258val di_location_get_line : location:Llvm.llmetadata -> int259(** [di_location_get_line l] Get the line number of debug location [l]. *)260 261val di_location_get_column : location:Llvm.llmetadata -> int262(** [di_location_get_column l] Get the column number of debug location [l]. *)263 264val di_location_get_scope : location:Llvm.llmetadata -> Llvm.llmetadata265(** [di_location_get_scope l] Get the local scope associated with266 debug location [l]. *)267 268val di_location_get_inlined_at :269 location:Llvm.llmetadata -> Llvm.llmetadata option270(** [di_location_get_inlined_at l] Get the "inlined at" location associated with271 debug location [l], if it exists. *)272 273val di_scope_get_file : scope:Llvm.llmetadata -> Llvm.llmetadata option274(** [di_scope_get_file l] Get the metadata of the file associated with scope [s]275 if it exists. *)276 277val di_file_get_directory : file:Llvm.llmetadata -> string278(** [di_file_get_directory f] Get the directory of file [f]. *)279 280val di_file_get_filename : file:Llvm.llmetadata -> string281(** [di_file_get_filename f] Get the name of file [f]. *)282 283val di_file_get_source : file:Llvm.llmetadata -> string284(** [di_file_get_source f] Get the source of file [f]. *)285 286val dibuild_get_or_create_type_array :287 lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata288(** [dibuild_get_or_create_type_array] Create a type array.289 See LLVMDIBuilderGetOrCreateTypeArray. *)290 291val dibuild_get_or_create_array :292 lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata293(** [dibuild_get_or_create_array] Create an array of DI Nodes.294 See LLVMDIBuilderGetOrCreateArray. *)295 296val dibuild_create_constant_value_expression :297 lldibuilder -> int -> Llvm.llmetadata298(** [dibuild_create_constant_value_expression] Create a new descriptor for299 the specified variable that does not have an address, but does have300 a constant value. See LLVMDIBuilderCreateConstantValueExpression. *)301 302val dibuild_create_global_variable_expression :303 lldibuilder ->304 scope:Llvm.llmetadata ->305 name:string ->306 linkage:string ->307 file:Llvm.llmetadata ->308 line:int ->309 ty:Llvm.llmetadata ->310 is_local_to_unit:bool ->311 expr:Llvm.llmetadata ->312 decl:Llvm.llmetadata ->313 align_in_bits:int ->314 Llvm.llmetadata315(** [dibuild_create_global_variable_expression] Create a new descriptor for316 the specified variable. See LLVMDIBuilderCreateGlobalVariableExpression. *)317 318val di_global_variable_expression_get_variable :319 Llvm.llmetadata -> Llvm.llmetadata option320(** [di_global_variable_expression_get_variable gve] returns the debug variable321 of [gve], which must be a [DIGlobalVariableExpression].322 See LLVMDIGlobalVariableExpressionGetVariable. *)323 324val di_variable_get_line : Llvm.llmetadata -> int325(** [di_variable_get_line v] returns the line number of the variable [v].326 See LLVMDIVariableGetLine. *)327 328val di_variable_get_file : Llvm.llmetadata -> Llvm.llmetadata option329(** [di_variable_get_file v] returns the file of the variable [v].330 See LLVMDIVariableGetFile. *)331 332val dibuild_create_subroutine_type :333 lldibuilder ->334 file:Llvm.llmetadata ->335 param_types:Llvm.llmetadata array ->336 lldiflags ->337 Llvm.llmetadata338(** [dibuild_create_subroutine_type] Create subroutine type.339 See LLVMDIBuilderCreateSubroutineType *)340 341val dibuild_create_enumerator :342 lldibuilder -> name:string -> value:int -> is_unsigned:bool -> Llvm.llmetadata343(** [dibuild_create_enumerator] Create debugging information entry for an344 enumerator. See LLVMDIBuilderCreateEnumerator *)345 346val dibuild_create_enumeration_type :347 lldibuilder ->348 scope:Llvm.llmetadata ->349 name:string ->350 file:Llvm.llmetadata ->351 line_number:int ->352 size_in_bits:int ->353 align_in_bits:int ->354 elements:Llvm.llmetadata array ->355 class_ty:Llvm.llmetadata ->356 Llvm.llmetadata357(** [dibuild_create_enumeration_type] Create debugging information entry for358 an enumeration. See LLVMDIBuilderCreateEnumerationType. *)359 360val dibuild_create_union_type :361 lldibuilder ->362 scope:Llvm.llmetadata ->363 name:string ->364 file:Llvm.llmetadata ->365 line_number:int ->366 size_in_bits:int ->367 align_in_bits:int ->368 lldiflags ->369 elements:Llvm.llmetadata array ->370 run_time_language:int ->371 unique_id:string ->372 Llvm.llmetadata373(** [dibuild_create_union_type] Create debugging information entry for a union.374 See LLVMDIBuilderCreateUnionType. *)375 376val dibuild_create_array_type :377 lldibuilder ->378 size:int ->379 align_in_bits:int ->380 ty:Llvm.llmetadata ->381 subscripts:Llvm.llmetadata array ->382 Llvm.llmetadata383(** [dibuild_create_array_type] Create debugging information entry for an array.384 See LLVMDIBuilderCreateArrayType. *)385 386val dibuild_create_vector_type :387 lldibuilder ->388 size:int ->389 align_in_bits:int ->390 ty:Llvm.llmetadata ->391 subscripts:Llvm.llmetadata array ->392 Llvm.llmetadata393(** [dibuild_create_vector_type] Create debugging information entry for a394 vector type. See LLVMDIBuilderCreateVectorType. *)395 396val dibuild_create_unspecified_type :397 lldibuilder -> name:string -> Llvm.llmetadata398(** [dibuild_create_unspecified_type] Create a DWARF unspecified type. *)399 400val dibuild_create_basic_type :401 lldibuilder ->402 name:string ->403 size_in_bits:int ->404 encoding:int ->405 lldiflags ->406 Llvm.llmetadata407(** [dibuild_create_basic_type] Create debugging information entry for a basic408 type. See LLVMDIBuilderCreateBasicType. *)409 410val dibuild_create_pointer_type :411 lldibuilder ->412 pointee_ty:Llvm.llmetadata ->413 size_in_bits:int ->414 align_in_bits:int ->415 address_space:int ->416 name:string ->417 Llvm.llmetadata418(** [dibuild_create_pointer_type] Create debugging information entry for a419 pointer. See LLVMDIBuilderCreatePointerType. *)420 421val dibuild_create_struct_type :422 lldibuilder ->423 scope:Llvm.llmetadata ->424 name:string ->425 file:Llvm.llmetadata ->426 line_number:int ->427 size_in_bits:int ->428 align_in_bits:int ->429 lldiflags ->430 derived_from:Llvm.llmetadata ->431 elements:Llvm.llmetadata array ->432 DWARFSourceLanguageKind.t ->433 vtable_holder:Llvm.llmetadata ->434 unique_id:string ->435 Llvm.llmetadata436(** [dibuild_create_struct_type] Create debugging information entry for a437 struct. See LLVMDIBuilderCreateStructType *)438 439val dibuild_create_member_type :440 lldibuilder ->441 scope:Llvm.llmetadata ->442 name:string ->443 file:Llvm.llmetadata ->444 line_number:int ->445 size_in_bits:int ->446 align_in_bits:int ->447 offset_in_bits:int ->448 lldiflags ->449 ty:Llvm.llmetadata ->450 Llvm.llmetadata451(** [dibuild_create_member_type] Create debugging information entry for a452 member. See LLVMDIBuilderCreateMemberType. *)453 454val dibuild_create_static_member_type :455 lldibuilder ->456 scope:Llvm.llmetadata ->457 name:string ->458 file:Llvm.llmetadata ->459 line_number:int ->460 ty:Llvm.llmetadata ->461 lldiflags ->462 const_val:Llvm.llvalue ->463 align_in_bits:int ->464 Llvm.llmetadata465(** [dibuild_create_static_member_type] Create debugging information entry for466 a C++ static data member. See LLVMDIBuilderCreateStaticMemberType *)467 468val dibuild_create_member_pointer_type :469 lldibuilder ->470 pointee_type:Llvm.llmetadata ->471 class_type:Llvm.llmetadata ->472 size_in_bits:int ->473 align_in_bits:int ->474 lldiflags ->475 Llvm.llmetadata476(** [dibuild_create_member_pointer_type] Create debugging information entry for477 a pointer to member. See LLVMDIBuilderCreateMemberPointerType *)478 479val dibuild_create_object_pointer_type :480 lldibuilder -> Llvm.llmetadata -> implicit:bool -> Llvm.llmetadata481(** [dibuild_create_object_pointer_type dib ty] Create a uniqued DIType* clone482 with FlagObjectPointer. [dib] is the dibuilder483 value and [ty] the underlying type to which this pointer points. If484 [implicit] is true, also set FlagArtificial. *)485 486val dibuild_create_qualified_type :487 lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata488(** [dibuild_create_qualified_type dib tag ty] Create debugging information489 entry for a qualified type, e.g. 'const int'. [dib] is the dibuilder value,490 [tag] identifyies the type and [ty] is the base type. *)491 492val dibuild_create_reference_type :493 lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata494(** [dibuild_create_reference_type dib tag ty] Create debugging information495 entry for a reference type. [dib] is the dibuilder value, [tag] identifyies496 the type and [ty] is the base type. *)497 498val dibuild_create_null_ptr_type : lldibuilder -> Llvm.llmetadata499(** [dibuild_create_null_ptr_type dib] Create C++11 nullptr type. *)500 501val dibuild_create_typedef :502 lldibuilder ->503 ty:Llvm.llmetadata ->504 name:string ->505 file:Llvm.llmetadata ->506 line_no:int ->507 scope:Llvm.llmetadata ->508 align_in_bits:int ->509 Llvm.llmetadata510(** [dibuild_create_typedef] Create debugging information entry for a typedef.511 See LLVMDIBuilderCreateTypedef. *)512 513val dibuild_create_inheritance :514 lldibuilder ->515 ty:Llvm.llmetadata ->516 base_ty:Llvm.llmetadata ->517 base_offset:int ->518 vb_ptr_offset:int ->519 lldiflags ->520 Llvm.llmetadata521(** [dibuild_create_inheritance] Create debugging information entry522 to establish inheritance relationship between two types.523 See LLVMDIBuilderCreateInheritance. *)524 525val dibuild_create_forward_decl :526 lldibuilder ->527 tag:int ->528 name:string ->529 scope:Llvm.llmetadata ->530 file:Llvm.llmetadata ->531 line:int ->532 runtime_lang:int ->533 size_in_bits:int ->534 align_in_bits:int ->535 unique_identifier:string ->536 Llvm.llmetadata537(** [dibuild_create_forward_decl] Create a permanent forward-declared type.538 See LLVMDIBuilderCreateForwardDecl. *)539 540val dibuild_create_replaceable_composite_type :541 lldibuilder ->542 tag:int ->543 name:string ->544 scope:Llvm.llmetadata ->545 file:Llvm.llmetadata ->546 line:int ->547 runtime_lang:int ->548 size_in_bits:int ->549 align_in_bits:int ->550 lldiflags ->551 unique_identifier:string ->552 Llvm.llmetadata553(** [dibuild_create_replaceable_composite_type] Create a temporary554 forward-declared type. See LLVMDIBuilderCreateReplaceableCompositeType. *)555 556val dibuild_create_bit_field_member_type :557 lldibuilder ->558 scope:Llvm.llmetadata ->559 name:string ->560 file:Llvm.llmetadata ->561 line_num:int ->562 size_in_bits:int ->563 offset_in_bits:int ->564 storage_offset_in_bits:int ->565 lldiflags ->566 ty:Llvm.llmetadata ->567 Llvm.llmetadata568(** [dibuild_create_bit_field_member_type] Create debugging information entry569 for a bit field member. See LLVMDIBuilderCreateBitFieldMemberType. *)570 571val dibuild_create_class_type :572 lldibuilder ->573 scope:Llvm.llmetadata ->574 name:string ->575 file:Llvm.llmetadata ->576 line_number:int ->577 size_in_bits:int ->578 align_in_bits:int ->579 offset_in_bits:int ->580 lldiflags ->581 derived_from:Llvm.llmetadata ->582 elements:Llvm.llmetadata array ->583 vtable_holder:Llvm.llmetadata ->584 template_params_node:Llvm.llmetadata ->585 unique_identifier:string ->586 Llvm.llmetadata587(** [dibuild_create_class_type] Create debugging information entry for a class.588 See LLVMDIBuilderCreateClassType. *)589 590val dibuild_create_artificial_type :591 lldibuilder -> ty:Llvm.llmetadata -> Llvm.llmetadata592(** [dibuild_create_artificial_type dib ty] Create a uniqued DIType* clone with593 FlagArtificial set.594 [dib] is the dibuilder value and [ty] the underlying type. *)595 596val di_type_get_name : Llvm.llmetadata -> string597(** [di_type_get_name m] Get the name of DIType [m]. *)598 599val di_type_get_size_in_bits : Llvm.llmetadata -> int600(** [di_type_get_size_in_bits m] Get size in bits of DIType [m]. *)601 602val di_type_get_offset_in_bits : Llvm.llmetadata -> int603(** [di_type_get_offset_in_bits m] Get offset in bits of DIType [m]. *)604 605val di_type_get_align_in_bits : Llvm.llmetadata -> int606(** [di_type_get_align_in_bits m] Get alignment in bits of DIType [m]. *)607 608val di_type_get_line : Llvm.llmetadata -> int609(** [di_type_get_line m] Get source line where DIType [m] is declared. *)610 611val di_type_get_flags : Llvm.llmetadata -> lldiflags612(** [di_type_get_flags m] Get the flags associated with DIType [m]. *)613 614val get_subprogram : Llvm.llvalue -> Llvm.llmetadata option615(** [get_subprogram f] Get the metadata of the subprogram attached to616 function [f]. *)617 618val set_subprogram : Llvm.llvalue -> Llvm.llmetadata -> unit619(** [set_subprogram f m] Set the subprogram [m] attached to function [f]. *)620 621val di_subprogram_get_line : Llvm.llmetadata -> int622(** [di_subprogram_get_line m] Get the line associated with subprogram [m]. *)623 624val instr_get_debug_loc : Llvm.llvalue -> Llvm.llmetadata option625(** [instr_get_debug_loc i] Get the debug location for instruction [i]. *)626 627val instr_set_debug_loc : Llvm.llvalue -> Llvm.llmetadata option -> unit628(** [instr_set_debug_loc i mopt] If [mopt] is None location metadata of [i]629 is cleared, Otherwise location of [i] is set to the value in [mopt]. *)630 631val get_metadata_kind : Llvm.llmetadata -> MetadataKind.t632(** [get_metadata_kind] Obtain the enumerated type of a Metadata instance. *)633 634val dibuild_create_auto_variable :635 lldibuilder ->636 scope:Llvm.llmetadata ->637 name:string ->638 file:Llvm.llmetadata ->639 line:int ->640 ty:Llvm.llmetadata ->641 always_preserve:bool ->642 lldiflags ->643 align_in_bits:int ->644 Llvm.llmetadata645(** [dibuild_create_auto_variable] Create a new descriptor for a646 local auto variable. *)647 648val dibuild_create_parameter_variable :649 lldibuilder ->650 scope:Llvm.llmetadata ->651 name:string ->652 argno:int ->653 file:Llvm.llmetadata ->654 line:int ->655 ty:Llvm.llmetadata ->656 always_preserve:bool ->657 lldiflags ->658 Llvm.llmetadata659(** [dibuild_create_parameter_variable] Create a new descriptor for a660 function parameter variable. *)661 662val dibuild_insert_declare_before :663 lldibuilder ->664 storage:Llvm.llvalue ->665 var_info:Llvm.llmetadata ->666 expr:Llvm.llmetadata ->667 location:Llvm.llmetadata ->668 instr:Llvm.llvalue ->669 Llvm.lldbgrecord670(** [dibuild_insert_declare_before] Insert a new llvm.dbg.declare671 intrinsic call before the given instruction [instr]. *)672 673val dibuild_insert_declare_at_end :674 lldibuilder ->675 storage:Llvm.llvalue ->676 var_info:Llvm.llmetadata ->677 expr:Llvm.llmetadata ->678 location:Llvm.llmetadata ->679 block:Llvm.llbasicblock ->680 Llvm.lldbgrecord681(** [dibuild_insert_declare_at_end] Insert a new llvm.dbg.declare682 intrinsic call at the end of basic block [block]. If [block]683 has a terminator instruction, the intrinsic is inserted684 before that terminator instruction. *)685 686val dibuild_expression : lldibuilder -> Int64.t array -> Llvm.llmetadata687(** [dibuild_expression] Create a new descriptor for the specified variable688 which has a complex address expression for its address.689 See LLVMDIBuilderCreateExpression. *)690 691val is_new_dbg_info_format : Llvm.llmodule -> bool692(** [is_new_dbg_info_format] See LLVMIsNewDbgInfoFormat *)693 694val set_is_new_dbg_info_format : Llvm.llmodule -> bool -> unit695(** [set_is_new_dbg_info_format] See LLVMSetIsNewDbgInfoFormat *)696