Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
numba
GitHub Repository: numba/llvmlite
Path: blob/main/ffi/bitcode.cpp
1154 views
1
#include "llvm-c/BitReader.h"
2
#include "llvm-c/BitWriter.h"
3
4
#include "core.h"
5
6
extern "C" {
7
8
API_EXPORT(void)
9
LLVMPY_WriteBitcodeToString(LLVMModuleRef M, const char **outbuf,
10
size_t *outlen) {
11
LLVMMemoryBufferRef MB = LLVMWriteBitcodeToMemoryBuffer(M);
12
*outlen = LLVMGetBufferSize(MB);
13
*outbuf = LLVMPY_CreateByteString(LLVMGetBufferStart(MB), *outlen);
14
LLVMDisposeMemoryBuffer(MB);
15
}
16
17
API_EXPORT(LLVMModuleRef)
18
LLVMPY_ParseBitcode(LLVMContextRef context, const char *bitcode,
19
size_t bitcodelen, char **outmsg) {
20
LLVMModuleRef ref;
21
LLVMMemoryBufferRef mem = LLVMCreateMemoryBufferWithMemoryRange(
22
bitcode, bitcodelen, "" /* BufferName*/, 0 /* RequiresNullTerminator*/
23
);
24
25
LLVMParseBitcodeInContext(context, mem, &ref, outmsg);
26
LLVMDisposeMemoryBuffer(mem);
27
return ref;
28
}
29
30
} // end extern "C"
31
32