llvm_c_ext/lib/DIBuilder.cpp
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 27 Jan 2016 14:20:58 +0000
changeset 54 a288aced3dd1
parent 32 1378060fadd6
child 79 6d6e5a3ec6b1
permissions -rw-r--r--
LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9 In LLVM 3.9 some parameters to these functions were dropped. The DIBuilder interface has been changed to reflect these changes (i.e., C functions no longer require dropped argument). The LLVM C Extensions library can still be compiled against LLVM 3.8 (via #ifdef), but the API will be different. Also, the Smalltallks bindings will make use of LLVM 3.9 interface. That said, LLVM C API Extensions library may still be used by *other* projects on top of LLVM 3.8, though Smalltalk bindings require LLVM 3.9 from now on.
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
54
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    80
#if (LLVM_VERSION_MAJOR <= 3) && (LLVM_VERSION_MINOR <= 8)
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
LLVMMetadataRef LLVMDIBuilderCreateFunction(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    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
    83
    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
    84
    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
    85
    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
    86
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
  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
    88
                                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
    89
                                unwrap<DISubroutineType>(CompositeType),
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
                                IsLocalToUnit, IsDefinition, ScopeLine, Flags,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
                                IsOptimized, unwrap<Function>(Func)));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
}
54
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    93
#else
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    94
LLVMMetadataRef LLVMDIBuilderCreateFunction(
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    95
    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    96
    const char *LinkageName, LLVMMetadataRef File, unsigned Line,
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    97
    LLVMMetadataRef CompositeType, int IsLocalToUnit, int IsDefinition,
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    98
    unsigned ScopeLine, unsigned Flags, int IsOptimized) {
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
    99
  DIBuilder *D = unwrap(Dref);
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   100
  return wrap(D->createFunction(unwrap<DIScope>(Scope), Name, LinkageName,
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   101
                                File ? unwrap<DIFile>(File) : nullptr, Line,
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   102
                                unwrap<DISubroutineType>(CompositeType),
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   103
                                IsLocalToUnit, IsDefinition, ScopeLine, Flags,
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   104
                                IsOptimized));
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   105
}
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   106
#endif
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    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
   111
    int AlwaysPreserve, unsigned Flags) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
  return wrap(D->createAutoVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
		  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
   115
		  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
   116
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
    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
   122
    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
   123
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
  return wrap(D->createParameterVariable(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
		  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
   126
		  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
   127
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
                                             const char *Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
                                             uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
                                             uint64_t AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
                                             unsigned Encoding) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
  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
   136
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
                                               LLVMMetadataRef PointeeType,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
                                               uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
                                               uint64_t AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
                                               const char *Name) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
  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
   145
                                   AlignInBits, Name));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
54
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   148
#if (LLVM_VERSION_MAJOR <= 3) && (LLVM_VERSION_MINOR <= 8)
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
LLVMMetadataRef
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref, LLVMMetadataRef File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
                                  LLVMMetadataRef ParameterTypes) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
  return wrap(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
      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
   155
                              DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
}
54
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   157
#else
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   158
LLVMMetadataRef
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   159
LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref,
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   160
                                  LLVMMetadataRef ParameterTypes) {
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   161
  DIBuilder *D = unwrap(Dref);
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   162
  return wrap(
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   163
      D->createSubroutineType(DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   164
}
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   165
#endif
a288aced3dd1 LLVM C API Extensions: Fixed DIBuilerCreateFunction() and DIBuilderCreateSubroutineType() for LLVM 3.9
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 32
diff changeset
   166
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
LLVMMetadataRef LLVMDIBuilderCreateStructType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
    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
   170
    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
   171
    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
   172
    LLVMMetadataRef ElementTypes) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
  return wrap(D->createStructType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
      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
   176
      SizeInBits, AlignInBits, Flags,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
      DerivedFrom ? unwrap<DIType>(DerivedFrom) : nullptr,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
      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
   179
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    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
   183
    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
   184
    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
   185
    unsigned Flags) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
  return wrap(D->createReplaceableCompositeType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
      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
   189
      Line, RuntimeLang, SizeInBits, AlignInBits, Flags));
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
LLVMMetadataRef
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
                              const char *Name, LLVMMetadataRef File,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
                              unsigned Line, uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
                              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
   197
                              unsigned Flags, LLVMMetadataRef Ty) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
  return wrap(D->createMemberType(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
      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
   201
      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
   202
}
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
LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
                                             uint64_t SizeInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
                                             uint64_t AlignInBits,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
                                             LLVMMetadataRef ElementType,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
                                             LLVMMetadataRef Subscripts) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
  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
   211
                                 unwrap<DIType>(ElementType),
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
                                 DINodeArray(unwrap<MDTuple>(Subscripts))));
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 LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
                                           LLVMMetadataRef Ty, const char *Name,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
                                           LLVMMetadataRef File, unsigned Line,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
                                           LLVMMetadataRef Context) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
  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
   221
                               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
   222
                               Context ? unwrap<DIScope>(Context) : nullptr));
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 LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
                                                 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
   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->getOrCreateSubrange(Lo, Count));
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
LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
                                              LLVMMetadataRef *Data,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
                                              size_t Length) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
  Metadata **DataValue = unwrap(Data);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
  ArrayRef<Metadata *> Elements(DataValue, Length);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
  DINodeArray A = D->getOrCreateArray(Elements);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
  return wrap(A.get());
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
                                                  LLVMMetadataRef *Data,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
                                                  size_t Length) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
  Metadata **DataValue = unwrap(Data);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
  ArrayRef<Metadata *> Elements(DataValue, Length);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
  DITypeRefArray A = D->getOrCreateTypeArray(Elements);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
  return wrap(A.get());
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
                                              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
   253
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
  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
   255
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
                                             LLVMValueRef Storage,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
                                             LLVMMetadataRef VarInfo,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
                                             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
   261
											 LLVMMetadataRef Location,
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
                                             LLVMBasicBlockRef Block) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
  Instruction *Instr = D->insertDeclare(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
      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
   266
      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
   267
  return wrap(Instr);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
}
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef Dref,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
                                           LLVMValueRef Val, uint64_t Offset,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
                                           LLVMMetadataRef VarInfo,
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
                                           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
   274
										   LLVMMetadataRef Location,
26
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
                                           LLVMBasicBlockRef Block) {
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
  DIBuilder *D = unwrap(Dref);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
  Instruction *Instr = D->insertDbgValueIntrinsic(
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
      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
   279
      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
   280
  return wrap(Instr);
f6379df4b5ea Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
}