[Orc] Make the ObjectLinkingLayer take ownership of object files until
[oota-llvm.git] / include / llvm / ExecutionEngine / Orc / IRCompileLayer.h
index 1664adf893303bfa37adb9ef003f7fc479c7ffe6..e16ff8d3a392790411c128ee564b282640773567 100644 (file)
@@ -76,7 +76,12 @@ public:
       Buffers.push_back(std::move(Buffer));
     }
 
       Buffers.push_back(std::move(Buffer));
     }
 
-    return BaseLayer.addObjectSet(std::move(Objects), std::move(MM));
+    ModuleSetHandleT H =
+      BaseLayer.addObjectSet(Objects, std::move(MM));
+
+    BaseLayer.takeOwnershipOfBuffers(H, std::move(Buffers));
+
+    return H;
   }
 
   /// @brief Remove the module set associated with the handle H.
   }
 
   /// @brief Remove the module set associated with the handle H.
@@ -108,7 +113,8 @@ private:
     if (!Obj)
       return object::OwningBinary<object::ObjectFile>();
 
     if (!Obj)
       return object::OwningBinary<object::ObjectFile>();
 
-    return {std::move(*Obj), std::move(ObjBuffer)};
+    return object::OwningBinary<object::ObjectFile>(std::move(*Obj),
+                                                    std::move(ObjBuffer));
   }
 
   BaseLayerT &BaseLayer;
   }
 
   BaseLayerT &BaseLayer;