From 7cc98ea88f5ec24369ba8123007637e47f093726 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 2 May 2013 18:25:53 -0400 Subject: [PATCH] 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. --- src/gallium/drivers/radeon/radeon_llvm_util.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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; } -- 2.30.2