llvm_c_ext/lib/DIBuilder.cpp
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 17 Aug 2015 09:16:53 +0100
changeset 32 1378060fadd6
parent 26 f6379df4b5ea
child 54 a288aced3dd1
permissions -rw-r--r--
LLVM C API Extensions: fixed LLVMDIBuilderInsert*AtEnd() functions for LLVM 3.8 Apparently in LLVM 3.8 passing nullptr as DILocation is not permitted any longer. Add DILocatin parameter to these functions. Add LLVMGetDebugLocation2() to extract current debug location from IR builder.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
//===- DIBuilderBindings.cpp - Bindings for DIBuilder ---------------------===//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
//                     The LLVM Compiler Infrastructure
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
// This file is distributed under the University of Illinois Open Source
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
// License. See LICENSE.TXT for details.
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
//===----------------------------------------------------------------------===//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
// This file defines C bindings for the DIBuilder class.
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
//===----------------------------------------------------------------------===//
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
/*
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
 * Shamelessly based on DIBuilderBindings.cpp from LLVM's GO bindings. The original
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 * file could be found at bindings/go/llvm/DIBuilderBindings.cpp in LLVM source tree.
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
 */
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
#include <llvm-c-ext/CoreExt.h>
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
#include <llvm-c-ext/DIBuilder.h>
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
#include "llvm/IR/DIBuilder.h"
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
#include "llvm/IR/IRBuilder.h"
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
#include "llvm/IR/Module.h"
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
using namespace llvm;
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DIBuilder, LLVMDIBuilderRef)
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
LLVMDIBuilderRef LLVMNewDIBuilder(LLVMModuleRef mref) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
  Module *m = unwrap(mref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
  return wrap(new DIBuilder(*m));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
void LLVMDIBuilderDestroy(LLVMDIBuilderRef dref) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
  DIBuilder *d = unwrap(dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
  delete d;
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
void LLVMDIBuilderFinalize(LLVMDIBuilderRef dref) { unwrap(dref)->finalize(); }
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
                                               unsigned Lang, const char *File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
                                               const char *Dir,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
                                               const char *Producer,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
                                               int Optimized, const char *Flags,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
                                               unsigned RuntimeVersion) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
  return wrap(D->createCompileUnit(Lang, File, Dir, Producer, Optimized, Flags,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
                                   RuntimeVersion));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
LLVMMetadataRef LLVMDIBuilderCreateFile(LLVMDIBuilderRef Dref, const char *File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
                                        const char *Dir) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
  return wrap(D->createFile(File, Dir));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
                                                LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
                                                LLVMMetadataRef File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
                                                unsigned Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
                                                unsigned Column) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
  auto *LB = D->createLexicalBlock(unwrap<DILocalScope>(Scope),
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
                                   unwrap<DIFile>(File), Line, Column);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
  return wrap(LB);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
LLVMMetadataRef LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
                                                    LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
                                                    LLVMMetadataRef File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
                                                    unsigned Discriminator) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
  return wrap(D->createLexicalBlockFile(unwrap<DILocalScope>(Scope),
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
                                        unwrap<DIFile>(File), Discriminator));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
LLVMMetadataRef LLVMDIBuilderCreateFunction(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    const char *LinkageName, LLVMMetadataRef File, unsigned Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    LLVMMetadataRef CompositeType, int IsLocalToUnit, int IsDefinition,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    unsigned ScopeLine, unsigned Flags, int IsOptimized, LLVMValueRef Func) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
  return wrap(D->createFunction(unwrap<DIScope>(Scope), Name, LinkageName,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
                                File ? unwrap<DIFile>(File) : nullptr, Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
                                unwrap<DISubroutineType>(CompositeType),
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
                                IsLocalToUnit, IsDefinition, ScopeLine, Flags,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
                                IsOptimized, unwrap<Function>(Func)));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    const char *Name, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    int AlwaysPreserve, unsigned Flags) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
  return wrap(D->createAutoVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
		  unwrap<DIScope>(Scope), StringRef(Name), unwrap<DIFile>(File), Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
		  unwrap<DIType>(Ty), (bool)AlwaysPreserve, Flags));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    const char *Name, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    int AlwaysPreserve, unsigned Flags, unsigned ArgNo) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
  return wrap(D->createParameterVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
		  unwrap<DIScope>(Scope), StringRef(Name), ArgNo, unwrap<DIFile>(File), Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
		  unwrap<DIType>(Ty), (bool)AlwaysPreserve, Flags));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
                                             const char *Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
                                             uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
                                             uint64_t AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
                                             unsigned Encoding) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
  return wrap(D->createBasicType(Name, SizeInBits, AlignInBits, Encoding));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
                                               LLVMMetadataRef PointeeType,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
                                               uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
                                               uint64_t AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
                                               const char *Name) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
  return wrap(D->createPointerType(unwrap<DIType>(PointeeType), SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
                                   AlignInBits, Name));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
LLVMMetadataRef
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref, LLVMMetadataRef File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
                                  LLVMMetadataRef ParameterTypes) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
  return wrap(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
      D->createSubroutineType(File ? unwrap<DIFile>(File) : nullptr,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
                              DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
LLVMMetadataRef LLVMDIBuilderCreateStructType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    LLVMMetadataRef File, unsigned Line, uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    uint64_t AlignInBits, unsigned Flags, LLVMMetadataRef DerivedFrom,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    LLVMMetadataRef ElementTypes) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
  return wrap(D->createStructType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
      unwrap<DIScope>(Scope), Name, File ? unwrap<DIFile>(File) : nullptr, Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
      SizeInBits, AlignInBits, Flags,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
      DerivedFrom ? unwrap<DIType>(DerivedFrom) : nullptr,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
      ElementTypes ? DINodeArray(unwrap<MDTuple>(ElementTypes)) : nullptr));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
    LLVMDIBuilderRef Dref, unsigned Tag, const char *Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
    unsigned RuntimeLang, uint64_t SizeInBits, uint64_t AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    unsigned Flags) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
  return wrap(D->createReplaceableCompositeType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
      Tag, Name, unwrap<DIScope>(Scope), File ? unwrap<DIFile>(File) : nullptr,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
      Line, RuntimeLang, SizeInBits, AlignInBits, Flags));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
LLVMMetadataRef
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
                              const char *Name, LLVMMetadataRef File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
                              unsigned Line, uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
                              uint64_t AlignInBits, uint64_t OffsetInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
                              unsigned Flags, LLVMMetadataRef Ty) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
  return wrap(D->createMemberType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
      unwrap<DIScope>(Scope), Name, File ? unwrap<DIFile>(File) : nullptr, Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
      SizeInBits, AlignInBits, OffsetInBits, Flags, unwrap<DIType>(Ty)));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
                                             uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
                                             uint64_t AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
                                             LLVMMetadataRef ElementType,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
                                             LLVMMetadataRef Subscripts) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
  return wrap(D->createArrayType(SizeInBits, AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
                                 unwrap<DIType>(ElementType),
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
                                 DINodeArray(unwrap<MDTuple>(Subscripts))));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
                                           LLVMMetadataRef Ty, const char *Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
                                           LLVMMetadataRef File, unsigned Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
                                           LLVMMetadataRef Context) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
  return wrap(D->createTypedef(unwrap<DIType>(Ty), Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
                               File ? unwrap<DIFile>(File) : nullptr, Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
                               Context ? unwrap<DIScope>(Context) : nullptr));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
                                                 int64_t Lo, int64_t Count) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
  return wrap(D->getOrCreateSubrange(Lo, Count));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
                                              LLVMMetadataRef *Data,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
                                              size_t Length) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
  Metadata **DataValue = unwrap(Data);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
  ArrayRef<Metadata *> Elements(DataValue, Length);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
  DINodeArray A = D->getOrCreateArray(Elements);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
  return wrap(A.get());
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
                                                  LLVMMetadataRef *Data,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
                                                  size_t Length) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
  Metadata **DataValue = unwrap(Data);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
  ArrayRef<Metadata *> Elements(DataValue, Length);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
  DITypeRefArray A = D->getOrCreateTypeArray(Elements);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
  return wrap(A.get());
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
                                              int64_t *Addr, size_t Length) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
  return wrap(D->createExpression(ArrayRef<int64_t>(Addr, Length)));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
                                             LLVMValueRef Storage,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
                                             LLVMMetadataRef VarInfo,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
                                             LLVMMetadataRef Expr,
32
1378060fadd6 LLVM C API Extensions: fixed LLVMDIBuilderInsert*AtEnd() functions for LLVM 3.8
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
   235
											 LLVMMetadataRef Location,
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
                                             LLVMBasicBlockRef Block) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
  Instruction *Instr = D->insertDeclare(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
      unwrap(Storage), unwrap<DILocalVariable>(VarInfo),
32
1378060fadd6 LLVM C API Extensions: fixed LLVMDIBuilderInsert*AtEnd() functions for LLVM 3.8
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
   240
      unwrap<DIExpression>(Expr), unwrap<DILocation>(Location), unwrap(Block));
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
  return wrap(Instr);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
                                           LLVMValueRef Val, uint64_t Offset,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
                                           LLVMMetadataRef VarInfo,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
                                           LLVMMetadataRef Expr,
32
1378060fadd6 LLVM C API Extensions: fixed LLVMDIBuilderInsert*AtEnd() functions for LLVM 3.8
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
   248
										   LLVMMetadataRef Location,
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
                                           LLVMBasicBlockRef Block) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
  Instruction *Instr = D->insertDbgValueIntrinsic(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
      unwrap(Val), Offset, unwrap<DILocalVariable>(VarInfo),
32
1378060fadd6 LLVM C API Extensions: fixed LLVMDIBuilderInsert*AtEnd() functions for LLVM 3.8
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 26
diff changeset
   253
      unwrap<DIExpression>(Expr), unwrap<DILocation>(Location), unwrap(Block));
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
  return wrap(Instr);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
}