Author: Jan Svoboda Date: 2024-03-01T16:53:12-08:00 New Revision: 164c0985681648cf18bef69d75ece2b327525737
URL: https://github.com/llvm/llvm-project/commit/164c0985681648cf18bef69d75ece2b327525737 DIFF: https://github.com/llvm/llvm-project/commit/164c0985681648cf18bef69d75ece2b327525737.diff LOG: [clang][deps] Implement move-conversion for `CowCompilerInvocation` (follow-up) Added: Modified: clang/include/clang/Frontend/CompilerInvocation.h clang/lib/Frontend/CompilerInvocation.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Frontend/CompilerInvocation.h b/clang/include/clang/Frontend/CompilerInvocation.h index 8fc51e6ec03b64..1a2a39411e58d8 100644 --- a/clang/include/clang/Frontend/CompilerInvocation.h +++ b/clang/include/clang/Frontend/CompilerInvocation.h @@ -201,6 +201,8 @@ class CompilerInvocationBase { /// @} }; +class CowCompilerInvocation; + /// Helper class for holding the data necessary to invoke the compiler. /// /// This class is designed to represent an abstract "invocation" of the @@ -220,6 +222,9 @@ class CompilerInvocation : public CompilerInvocationBase { } ~CompilerInvocation() = default; + explicit CompilerInvocation(const CowCompilerInvocation &X); + CompilerInvocation &operator=(const CowCompilerInvocation &X); + /// Const getters. /// @{ // Note: These need to be pulled in manually. Otherwise, they get hidden by diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 9555dbf663d334..691f3b989b81e5 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -191,6 +191,17 @@ CompilerInvocationBase::shallow_copy_assign(const CompilerInvocationBase &X) { return *this; } +CompilerInvocation::CompilerInvocation(const CowCompilerInvocation &X) + : CompilerInvocationBase(EmptyConstructor{}) { + CompilerInvocationBase::deep_copy_assign(X); +} + +CompilerInvocation & +CompilerInvocation::operator=(const CowCompilerInvocation &X) { + CompilerInvocationBase::deep_copy_assign(X); + return *this; +} + namespace { template <typename T> T &ensureOwned(std::shared_ptr<T> &Storage) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits