From: Tom Stellard Date: Thu, 2 May 2013 22:25:53 +0000 (-0400) Subject: radeon/llvm: Don't use the global context when parsing LLVM IR X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7cc98ea88f5ec24369ba8123007637e47f093726;p=mesa.git radeon/llvm: Don't use the global context when parsing LLVM IR This leads to crashes when multiple threads try to compile compute shaders in the same time. Fixes a crash in bfgminer when using more than one thread. --- diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.c b/src/gallium/drivers/radeon/radeon_llvm_util.c index 2582d9cf118..e3b0d638b71 100644 --- a/src/gallium/drivers/radeon/radeon_llvm_util.c +++ b/src/gallium/drivers/radeon/radeon_llvm_util.c @@ -34,11 +34,12 @@ LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len) { LLVMMemoryBufferRef buf; - LLVMModuleRef module = LLVMModuleCreateWithName("radeon"); + LLVMContextRef ctx = LLVMContextCreate(); + LLVMModuleRef module; buf = LLVMCreateMemoryBufferWithMemoryRangeCopy((const char*)bitcode, bitcode_len, "radeon"); - LLVMParseBitcode(buf, &module, NULL); + LLVMParseBitcodeInContext(ctx, buf, &module, NULL); return module; }