================
@@ -1544,8 +1544,8 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char 
*> ArgList) {
   }
 
   // The compilation takes ownership of Args.
-  Compilation *C = new Compilation(*this, TC, UArgs.release(), TranslatedArgs,
-                                   ContainsError);
+  Compilation *C = new Compilation(*this, TC, std::move(UArgs),
+                                   std::move(TranslatedArgs), ContainsError);
----------------
DavidTruby wrote:
You're moving from TranslatedArgs here but it's used again in a few lines, 
where it will be `nullptr`. I think if you want to do this then TranslatedArgs 
should be a `std::shared_ptr` in this function, as it already is inside the 
`Compilation` class in your patch, and then it doesn't need to be moved from 
here.

Alternatively you can use C->getArgs() on line 1555 instead of TranslatedArgs.

I recommend doing LLVM builds with the `-DLLVM_ENABLE_ASSERTIONS=On` cmake 
option when doing LLVM development as it catches these kinds of issues. The CI 
uses that flag and didn't pass because `std::unique_ptr::operator*` has an 
assertion that the pointer isn't null.

https://github.com/llvm/llvm-project/pull/116406
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to