brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.2 KiB · d759b53 Raw
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