Address some compile warnings from Clang 13

The latest emscripten uses Clang 13, which points out some new warnings
about implicit copy constructors, copy assignment operators etc.

This addresses some that I found until llvm crashed and would not
compile further (https://bugs.llvm.org/show_bug.cgi?id=50408)

Change-Id: Ia4d3f0b308facb18bf2da50261326244a7848644
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/413056
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
diff --git a/gn/skia/BUILD.gn b/gn/skia/BUILD.gn
index fdd5562..57235a6 100644
--- a/gn/skia/BUILD.gn
+++ b/gn/skia/BUILD.gn
@@ -447,10 +447,12 @@
       "-Wno-missing-variable-declarations",
       "-Wno-pedantic",
       "-Wno-reserved-id-macro",
+      "-Wno-reserved-identifier",
       "-Wno-shadow",
       "-Wno-shift-sign-overflow",
       "-Wno-signed-enum-bitfield",
       "-Wno-switch-enum",
+      "-Wno-thread-safety-negative",
       "-Wno-undef",
       "-Wno-unreachable-code",
       "-Wno-unreachable-code-break",
@@ -459,7 +461,6 @@
       "-Wno-unused-member-function",
       "-Wno-unused-template",
       "-Wno-zero-as-null-pointer-constant",
-      "-Wno-thread-safety-negative",
       "-Wno-non-c-typedef-for-linkage",  # Dawn, not Skia per se.
     ]
     cflags_cc += [
diff --git a/src/core/SkZip.h b/src/core/SkZip.h
index 45e1a13..78009e7 100644
--- a/src/core/SkZip.h
+++ b/src/core/SkZip.h
@@ -57,6 +57,7 @@
             : fPointers{ts...}
             , fSize{size} {}
     constexpr SkZip(const SkZip& that) = default;
+    constexpr SkZip& operator=(const SkZip &that) = default;
 
     // Check to see if U can be used for const T or is the same as T
     template <typename U, typename T>
diff --git a/src/gpu/GrProcessorSet.h b/src/gpu/GrProcessorSet.h
index 7dbf695..d0b213a 100644
--- a/src/gpu/GrProcessorSet.h
+++ b/src/gpu/GrProcessorSet.h
@@ -73,6 +73,8 @@
         Analysis(const Analysis&) = default;
         Analysis() { *reinterpret_cast<uint32_t*>(this) = 0; }
 
+        Analysis& operator=(const Analysis &other) = default;
+
         bool isInitialized() const { return fIsInitialized; }
         bool usesLocalCoords() const { return fUsesLocalCoords; }
         bool requiresDstTexture() const { return fRequiresDstTexture; }
diff --git a/src/gpu/GrProgramDesc.h b/src/gpu/GrProgramDesc.h
index 96dec23..cac31a9 100644
--- a/src/gpu/GrProgramDesc.h
+++ b/src/gpu/GrProgramDesc.h
@@ -106,6 +106,7 @@
 class GrProgramDesc {
 public:
     GrProgramDesc(const GrProgramDesc& other) = default;
+    GrProgramDesc& operator=(const GrProgramDesc &other) = default;
 
     bool isValid() const { return !fKey.empty(); }
     void reset() { *this = GrProgramDesc{}; }
diff --git a/src/gpu/geometry/GrQuad.h b/src/gpu/geometry/GrQuad.h
index 58f59f0..3c7d433 100644
--- a/src/gpu/geometry/GrQuad.h
+++ b/src/gpu/geometry/GrQuad.h
@@ -41,6 +41,7 @@
 
     // This enforces W == 1 for non-perspective quads, but does not initialize X or Y.
     GrQuad() = default;
+    GrQuad(const GrQuad&) = default;
 
     explicit GrQuad(const SkRect& rect)
             : fX{rect.fLeft, rect.fLeft, rect.fRight, rect.fRight}