From 7e9abbea15bf6ff717c1908870d9c2de219d69b4 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 7 Mar 2013 16:51:09 -0500 Subject: [PATCH] radeon/llvm: Implement radeon_llvm_parse_bitcode() using C API Also make the function static since it is not used anywhere else. --- src/gallium/drivers/radeon/radeon_llvm_util.cpp | 18 +++++++++++------- src/gallium/drivers/radeon/radeon_llvm_util.h | 1 - 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.cpp b/src/gallium/drivers/radeon/radeon_llvm_util.cpp index 22c6dc6..5f63ed7 100644 --- a/src/gallium/drivers/radeon/radeon_llvm_util.cpp +++ b/src/gallium/drivers/radeon/radeon_llvm_util.cpp @@ -10,18 +10,22 @@ #include #include #include +#include +#include #include "radeon_llvm_util.h" -extern "C" LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len) +static LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * bitcode, + unsigned bitcode_len) { - llvm::OwningPtr M; - llvm::StringRef str((const char*)bitcode, bitcode_len); - llvm::MemoryBuffer* buffer = llvm::MemoryBuffer::getMemBufferCopy(str); - llvm::SMDiagnostic Err; - M.reset(llvm::ParseIR(buffer, Err, llvm::getGlobalContext())); - return wrap(M.take()); + LLVMMemoryBufferRef buf; + LLVMModuleRef module = LLVMModuleCreateWithName("radeon"); + + buf = LLVMCreateMemoryBufferWithMemoryRangeCopy((const char*)bitcode, + bitcode_len, "radeon"); + LLVMParseBitcode(buf, &module, NULL); + return module; } extern "C" void radeon_llvm_strip_unused_kernels(LLVMModuleRef mod, const char *kernel_name) diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.h b/src/gallium/drivers/radeon/radeon_llvm_util.h index a7dfa9b..e144164 100644 --- a/src/gallium/drivers/radeon/radeon_llvm_util.h +++ b/src/gallium/drivers/radeon/radeon_llvm_util.h @@ -7,7 +7,6 @@ extern "C" { #endif -LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len); void radeon_llvm_strip_unused_kernels(LLVMModuleRef mod, const char *kernel_name); unsigned radeon_llvm_get_num_kernels(const unsigned char *bitcode, unsigned bitcode_len); LLVMModuleRef radeon_llvm_get_kernel_module(unsigned index, -- 2.7.4