From df39994d51b4c28201f1b9ca12e572692d8d169c Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Wed, 8 May 2024 16:43:14 +0200 Subject: [PATCH] clover: fix memory leak related to optimize Indeed, the object returned by LLVMCreatePassBuilderOptions() was not freed. For instance, this issue is triggered with "piglit/bin/cl-api-build-program": Direct leak of 32 byte(s) in 1 object(s) allocated from: #0 0x7f6b15abdf57 in operator new(unsigned long) (/usr/lib64/libasan.so.6+0xb2f57) #1 0x7f6afff6529e in LLVMCreatePassBuilderOptions llvm-18.1.5/lib/Passes/PassBuilderBindings.cpp:83 #2 0x7f6b1186ee41 in optimize ../src/gallium/frontends/clover/llvm/invocation.cpp:521 #3 0x7f6b1186ee41 in clover::llvm::link_program(std::vector > const&, clover::device const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator >&) ../src/gallium/frontends/clover/llvm/invocation.cpp:554 #4 0x7f6b1150ce67 in link_program ../src/gallium/frontends/clover/core/compiler.hpp:78 #5 0x7f6b1150ce67 in clover::program::link(clover::ref_vector const&, std::__cxx11::basic_string, std::allocator > const&, clover::ref_vector const&) ../src/gallium/frontends/clover/core/program.cpp:78 #6 0x7f6b11401a2b in clBuildProgram ../src/gallium/frontends/clover/api/program.cpp:283 Fixes: 2d4fe5f2297 ("clover/llvm: move to modern pass manager.") Signed-off-by: Patrick Lerda Reviewed-by: Karol Herbst Part-of: --- src/gallium/frontends/clover/llvm/invocation.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/frontends/clover/llvm/invocation.cpp b/src/gallium/frontends/clover/llvm/invocation.cpp index d49578e1272..019d1ccf33c 100644 --- a/src/gallium/frontends/clover/llvm/invocation.cpp +++ b/src/gallium/frontends/clover/llvm/invocation.cpp @@ -522,6 +522,7 @@ namespace { LLVMRunPasses(wrap(&mod), opt_str, tm, opts); LLVMDisposeTargetMachine(tm); + LLVMDisposePassBuilderOptions(opts); } std::unique_ptr