From 5ebff1ac1b986c6b5317aaf5ab6c4830a711067a Mon Sep 17 00:00:00 2001 From: "Manna, Soumi" Date: Sun, 14 May 2023 19:49:22 -0700 Subject: [PATCH] [NFC][Clang] Fix Coverity issues of copy without assign This patch adds missing copy/move assignment operator to the class which has user-defined copy/move constructor. Reviewed By: tahonermann Differential Revision: https://reviews.llvm.org/D149718 --- clang/include/clang/Analysis/BodyFarm.h | 3 +++ clang/include/clang/Sema/ParsedAttr.h | 3 +++ clang/lib/Analysis/UnsafeBufferUsage.cpp | 2 ++ clang/lib/Serialization/ASTWriterStmt.cpp | 1 + 4 files changed, 9 insertions(+) diff --git a/clang/include/clang/Analysis/BodyFarm.h b/clang/include/clang/Analysis/BodyFarm.h index eaa6472..52be29c 100644 --- a/clang/include/clang/Analysis/BodyFarm.h +++ b/clang/include/clang/Analysis/BodyFarm.h @@ -40,6 +40,9 @@ public: /// Remove copy constructor to avoid accidental copying. BodyFarm(const BodyFarm &other) = delete; + /// Delete copy assignment operator. + BodyFarm &operator=(const BodyFarm &other) = delete; + private: typedef llvm::DenseMap> BodyMap; diff --git a/clang/include/clang/Sema/ParsedAttr.h b/clang/include/clang/Sema/ParsedAttr.h index 345c3c8..837725c 100644 --- a/clang/include/clang/Sema/ParsedAttr.h +++ b/clang/include/clang/Sema/ParsedAttr.h @@ -696,11 +696,13 @@ public: AttributePool(AttributeFactory &factory) : Factory(factory) {} AttributePool(const AttributePool &) = delete; + AttributePool &operator=(const AttributePool &) = delete; ~AttributePool() { Factory.reclaimPool(*this); } /// Move the given pool's allocations to this pool. AttributePool(AttributePool &&pool) = default; + AttributePool &operator=(AttributePool &&pool) = default; AttributeFactory &getFactory() const { return Factory; } @@ -912,6 +914,7 @@ class ParsedAttributes : public ParsedAttributesView { public: ParsedAttributes(AttributeFactory &factory) : pool(factory) {} ParsedAttributes(const ParsedAttributes &) = delete; + ParsedAttributes &operator=(const ParsedAttributes &) = delete; AttributePool &getPool() const { return pool; } diff --git a/clang/lib/Analysis/UnsafeBufferUsage.cpp b/clang/lib/Analysis/UnsafeBufferUsage.cpp index 7871fed..700a094 100644 --- a/clang/lib/Analysis/UnsafeBufferUsage.cpp +++ b/clang/lib/Analysis/UnsafeBufferUsage.cpp @@ -762,7 +762,9 @@ private: public: Strategy() = default; Strategy(const Strategy &) = delete; // Let's avoid copies. + Strategy &operator=(const Strategy &) = delete; Strategy(Strategy &&) = default; + Strategy &operator=(Strategy &&) = default; void set(const VarDecl *VD, Kind K) { Map[VD] = K; } diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index 90c30fc..363f756 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -42,6 +42,7 @@ namespace clang { Code(serialization::STMT_NULL_PTR), AbbrevToUse(0) {} ASTStmtWriter(const ASTStmtWriter&) = delete; + ASTStmtWriter &operator=(const ASTStmtWriter &) = delete; uint64_t Emit() { assert(Code != serialization::STMT_NULL_PTR && -- 2.7.4