author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 17 Aug 2015 09:14:38 +0100 | |
changeset 31 | 5280c546bd37 |
parent 26 | f6379df4b5ea |
child 40 | d99596797aa1 |
permissions | -rw-r--r-- |
26
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
//===- IRBindings.h - Additional bindings for IR ----------------*- C++ -*-===// |
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 additional C bindings for the IR component. |
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 IRBindings.h 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/IRBindings.h 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 |
#ifndef LLVM_BINDINGS_GO_LLVM_IRBINDINGS_H |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
#define LLVM_BINDINGS_GO_LLVM_IRBINDINGS_H |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
|
31
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
22 |
struct LLVMOpaqueMetadata; |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
23 |
|
26
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
#if defined(__cplusplus) && !defined(__GCCXML__) |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
#include "llvm-c/Core.h" |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
#include "llvm/IR/Metadata.h" |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
#include "llvm/Support/CBindingWrapping.h" |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
#endif |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
#include <stdint.h> |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
#include <llvm-c/Core.h> |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
#ifdef __cplusplus |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
extern "C" { |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
#endif |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
typedef struct LLVMOpaqueMetadata *LLVMMetadataRef; |
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 |
// These functions duplicate the LLVM*FunctionAttr functions in the stable C |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
// API. We cannot use the existing functions because they take 32-bit attribute |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
// values, and the Go bindings expose all of the LLVM attributes, some of which |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
// have values >= 1<<32. |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
void LLVMAddFunctionAttr2(LLVMValueRef Fn, uint64_t PA); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
uint64_t LLVMGetFunctionAttr2(LLVMValueRef Fn); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
void LLVMRemoveFunctionAttr2(LLVMValueRef Fn, uint64_t PA); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
LLVMMetadataRef LLVMConstantAsMetadata(LLVMValueRef Val); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
LLVMMetadataRef LLVMMDString2(LLVMContextRef C, const char *Str, unsigned SLen); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
LLVMMetadataRef LLVMMDNode2(LLVMContextRef C, LLVMMetadataRef *MDs, |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
unsigned Count); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef C, LLVMMetadataRef *MDs, |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
unsigned Count); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
void LLVMAddNamedMetadataOperand2(LLVMModuleRef M, const char *name, |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
LLVMMetadataRef Val); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
void LLVMSetMetadata2(LLVMValueRef Inst, unsigned KindID, LLVMMetadataRef MD); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef MD, LLVMMetadataRef New); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
|
31
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
63 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
64 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
65 |
* Set the current source location in the original source. This information |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
66 |
* is used to attach debug information to each instruction generated |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
67 |
* from now onwards (until a new location is set) |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
68 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
69 |
* \param Bref the IR builder in which to set the location |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
70 |
* \param Line source line of upcoming instructions |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
71 |
* \param Col source column of upcoming instructions |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
72 |
* \param Scope a scope in which the location belongs, i.e., |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
73 |
* a DISubroutine, a DILexicalBlock end so on. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
74 |
* \param InlinedAt if the code is inlined, the scope in which |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
75 |
* it is inlined |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
76 |
*/ |
26
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
void LLVMSetCurrentDebugLocation2(LLVMBuilderRef Bref, unsigned Line, |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
unsigned Col, LLVMMetadataRef Scope, |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
LLVMMetadataRef InlinedAt); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
|
31
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
81 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
82 |
* Returns current source location as LLVM metadata (instance of DILocation). |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
83 |
* Reference to the location may be then passed to LLVMDiBuilderInsertDeclare() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
84 |
* and LLVMDiBuilderInsertValue(). |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
85 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
86 |
* \param Bref a builder from which to obtain the location |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
87 |
* \return DILocation as LLVMMetadataRef |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
88 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
89 |
* \see LLVMDiBuilderInsertDeclare() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
90 |
* \see LLVMDiBuilderInsertValue() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
91 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
92 |
LLVMMetadataRef LLVMGetCurrentDebugLocation2(LLVMBuilderRef Bref); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
93 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
94 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
95 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
96 |
* This enumeration defines the supported behaviors of module flags. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
97 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
98 |
* \see llvm::Module::ModFlagBehavior |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
99 |
* \see llbm::Module::addModuleFlag() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
100 |
* \see LLVMAddModuleFlag() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
101 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
102 |
enum LLVMModuleFlagBehavior { |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
103 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
104 |
* Emits an error if two values disagree, otherwise the resulting value is |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
105 |
* that of the operands. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
106 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
107 |
LLVMModuleFlagBehaviorError = 1, |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
108 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
109 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
110 |
* Emits a warning if two values disagree. The result value will be the |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
111 |
* operand for the flag from the first module being linked. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
112 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
113 |
LLVMModuleFlagBehaviorWarning = 2, |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
114 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
115 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
116 |
* Adds a requirement that another module flag be present and have a |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
117 |
* specified value after linking is performed. The value must be a metadata |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
118 |
* pair, where the first element of the pair is the ID of the module flag |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
119 |
* to be restricted, and the second element of the pair is the value the |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
120 |
* module flag should be restricted to. This behavior can be used to |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
121 |
* restrict the allowable results (via triggering of an error) of linking |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
122 |
* IDs with the **Override** behavior. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
123 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
124 |
LLVMModuleFlagBehaviorRequire = 3, |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
125 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
126 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
127 |
* Uses the specified value, regardless of the behavior or value of the |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
128 |
* other module. If both modules specify **Override**, but the values |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
129 |
* differ, an error will be emitted. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
130 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
131 |
LLVMModuleFlagBehaviorOverride = 4, |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
132 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
133 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
134 |
* Appends the two values, which are required to be metadata nodes. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
135 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
136 |
LLVMModuleFlagBehaviorAppend = 5, |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
137 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
138 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
139 |
* Appends the two values, which are required to be metadata |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
140 |
* nodes. However, duplicate entries in the second list are dropped |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
141 |
* during the append operation. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
142 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
143 |
LLVMModuleFlagBehaviorAppendUnique = 6, |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
144 |
}; |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
145 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
146 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
147 |
* Adds a flag to the module. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
148 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
149 |
* \see llvm::Module::addModuleFlag() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
150 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
151 |
void LLVMModuleAddModuleFlag(LLVMModuleRef M, LLVMModuleFlagBehavior Behavior, const char *Key, LLVMMetadataRef Val); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
152 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
153 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
154 |
* @defgroup metadataconv Metadata - Value Conversions |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
155 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
156 |
* Set of functions to convert metadata to values and back. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
157 |
* These are useful in cases when to "call" an intrinsic function with |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
158 |
* metadata as parameters, such as @llvm.dbg.declare. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
159 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
160 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
161 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
162 |
* Convert metadata node to it's value representation. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
163 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
164 |
* \param MD metadata to convert |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
165 |
* \return metadata represented as LLVM value |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
166 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
167 |
* \see LLVMMetadataAsValueInContext() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
168 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
169 |
LLVMValueRef LLVMMetadataAsValue(LLVMMetadataRef MD); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
170 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
171 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
172 |
* Convert metadata node to it's value representation in given context. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
173 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
174 |
* \param C context in which the conversion takes place |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
175 |
* \param MD metadata to convert |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
176 |
* \return metadata represented as LLVM value |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
177 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
178 |
* \see LLVMMetadataAsValue() |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
179 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
180 |
LLVMValueRef LLVMMetadataAsValueInContext(LLVMContextRef C, LLVMMetadataRef MD); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
181 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
182 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
183 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
184 |
* Converts value to metadata. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
185 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
186 |
* \param Value value to convert |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
187 |
* \return metadata representation of the talue |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
188 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
189 |
LLVMMetadataRef LLVMValueAsMetadata(LLVMValueRef Value); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
190 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
191 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
192 |
* } |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
193 |
*/ // end of @defgroup metadataconv Metadata - Value Conversions |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
194 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
195 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
196 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
197 |
* @defgroup constvalconv Constant value conversions |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
198 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
199 |
* A set of functions to convert constant values represented |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
200 |
* as LLVMValueRef to numeric values. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
201 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
202 |
* If the LLVMValueRef is not a constant value of requested type, |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
203 |
* 0 is returned. Since 0 is also a valid value, caller should |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
204 |
* first check whether the value is actually a constant value using |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
205 |
* LLVMIsConstant() and check whether the type matches: |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
206 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
207 |
* @code{.c} |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
208 |
* ... |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
209 |
* LLVMValueRef valueRef = ...; |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
210 |
* int32_t value; |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
211 |
* if( LLVMIsConstant(valueRef) && |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
212 |
* LLVMGetTypeKind(LLVMTypeOf(valueRef)) == LLVMIntegerTypeKind && |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
213 |
* LLVMGetIntTypeWidth(LLVMTypeOf(valueRef)) <= 64) { |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
214 |
* value = LLVMValueAsSInt64(); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
215 |
* } else { |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
216 |
* ...valurRef is not a constant value of type int64_t... |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
217 |
* } |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
218 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
219 |
* @endcode |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
220 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
221 |
* @{ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
222 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
223 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
224 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
225 |
* Returns a signed 64-bit integer value of given LLVMValueRef. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
226 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
227 |
* \param Value a (constant) value of type i64 (or narrower) |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
228 |
* \return signed 64-bit integer value that passed Value encapsulates |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
229 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
230 |
* \see constvalconv |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
231 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
232 |
int64_t LLVMValueAsSInt64(LLVMValueRef Value); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
233 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
234 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
235 |
* Returns a unsigned 64-bit integer value of given LLVMValueRef. |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
236 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
237 |
* \param Value a (constant) value of type i64 (or narrower) |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
238 |
* \return unsigned 64-bit integer value that passed Value encapsulates |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
239 |
* |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
240 |
* \see constvalconv |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
241 |
*/ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
242 |
uint64_t LLVMValueAsUInt64(LLVMValueRef Value); |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
243 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
244 |
/* TODO: Add functions for FP types and perhaps for strings. */ |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
245 |
|
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
246 |
/** |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
247 |
* } |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
248 |
*/ // end of @defgroup constvalconv Constant value conversions |
5280c546bd37
LLVM C API Extensions: added utility conversion/data extraction routines
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
26
diff
changeset
|
249 |
|
26
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
#ifdef __cplusplus |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
} |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
#endif |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
254 |
#if defined(__cplusplus) && !defined(__GCCXML__) |
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 |
namespace llvm { |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
257 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
258 |
DEFINE_ISA_CONVERSION_FUNCTIONS(Metadata, LLVMMetadataRef) |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
259 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
260 |
inline Metadata **unwrap(LLVMMetadataRef *Vals) { |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
261 |
return reinterpret_cast<Metadata**>(Vals); |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
262 |
} |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
263 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
264 |
} |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
265 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
266 |
#endif |
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
267 |
|
f6379df4b5ea
Added DIBuilder API to LLVM C Ext library
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
268 |
#endif |