[llvm] a702fa2 - [ORC] Make LLVMOrcLLJITBuilderSetJITTargetMachineBuilder consume as advertised.

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 26 22:28:21 PDT 2021


Author: Lang Hames
Date: 2021-04-26T22:26:38-07:00
New Revision: a702fa2a04221a3b26abd7a9ef3d908f351a6eb2

URL: https://github.com/llvm/llvm-project/commit/a702fa2a04221a3b26abd7a9ef3d908f351a6eb2
DIFF: https://github.com/llvm/llvm-project/commit/a702fa2a04221a3b26abd7a9ef3d908f351a6eb2.diff

LOG: [ORC] Make LLVMOrcLLJITBuilderSetJITTargetMachineBuilder consume as advertised.

This should fix some of the memory leaks seen in the ORC C API test case.

Added: 
    

Modified: 
    llvm/include/llvm-c/Orc.h
    llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm-c/Orc.h b/llvm/include/llvm-c/Orc.h
index 78f6f28a4657..76692ba89def 100644
--- a/llvm/include/llvm-c/Orc.h
+++ b/llvm/include/llvm-c/Orc.h
@@ -635,8 +635,9 @@ LLVMErrorRef LLVMOrcJITTargetMachineBuilderDetectHost(
  *
  * This operation takes ownership of the given TargetMachine and destroys it
  * before returing. The resulting JITTargetMachineBuilder is owned by the client
- * and must be passed to a consuming operation (e.g. LLVMOrcCreateLLJITBuilder)
- * or disposed of by calling LLVMOrcDisposeJITTargetMachineBuilder.
+ * and must be passed to a consuming operation (e.g.
+ * LLVMOrcLLJITBuilderSetJITTargetMachineBuilder) or disposed of by calling
+ * LLVMOrcDisposeJITTargetMachineBuilder.
  */
 LLVMOrcJITTargetMachineBuilderRef
 LLVMOrcJITTargetMachineBuilderCreateFromTargetMachine(LLVMTargetMachineRef TM);

diff  --git a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp
index 419f6e81e6e3..5f9cb10be588 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp
@@ -513,7 +513,8 @@ void LLVMOrcDisposeLLJITBuilder(LLVMOrcLLJITBuilderRef Builder) {
 
 void LLVMOrcLLJITBuilderSetJITTargetMachineBuilder(
     LLVMOrcLLJITBuilderRef Builder, LLVMOrcJITTargetMachineBuilderRef JTMB) {
-  unwrap(Builder)->setJITTargetMachineBuilder(*unwrap(JTMB));
+  unwrap(Builder)->setJITTargetMachineBuilder(std::move(*unwrap(JTMB)));
+  LLVMOrcDisposeJITTargetMachineBuilder(JTMB);
 }
 
 void LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator(


        


More information about the llvm-commits mailing list