[clang] Guard against self-assignment; NFC (PR #145743)

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 25 11:21:29 PDT 2025


https://github.com/AaronBallman updated https://github.com/llvm/llvm-project/pull/145743

>From edde45b2a4d1ee4408b798be17e3b63ffb80f949 Mon Sep 17 00:00:00 2001
From: Aaron Ballman <aaron at aaronballman.com>
Date: Wed, 25 Jun 2025 13:26:03 -0400
Subject: [PATCH 1/2] Guard against self-assignment; NFC

This was caught by a static analysis tool and seemed like a reasonable
code quality improvement.
---
 clang/include/clang/AST/Type.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h
index 24f3ae78e857b..f4d39afded322 100644
--- a/clang/include/clang/AST/Type.h
+++ b/clang/include/clang/AST/Type.h
@@ -6410,9 +6410,11 @@ class SpirvOperand {
   ~SpirvOperand() {}
 
   SpirvOperand &operator=(const SpirvOperand &Other) {
-    this->Kind = Other.Kind;
-    this->ResultType = Other.ResultType;
-    this->Value = Other.Value;
+    if (this != &Other) {
+      this->Kind = Other.Kind;
+      this->ResultType = Other.ResultType;
+      this->Value = Other.Value;
+    }
     return *this;
   }
 

>From e3f15db227fec6c9d40d7527aa4f5265161debbe Mon Sep 17 00:00:00 2001
From: Aaron Ballman <aaron at aaronballman.com>
Date: Wed, 25 Jun 2025 14:20:52 -0400
Subject: [PATCH 2/2] Go with = default instead

---
 clang/include/clang/AST/Type.h | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h
index f4d39afded322..1a87608e5be34 100644
--- a/clang/include/clang/AST/Type.h
+++ b/clang/include/clang/AST/Type.h
@@ -6409,14 +6409,7 @@ class SpirvOperand {
   SpirvOperand(const SpirvOperand &Other) { *this = Other; }
   ~SpirvOperand() {}
 
-  SpirvOperand &operator=(const SpirvOperand &Other) {
-    if (this != &Other) {
-      this->Kind = Other.Kind;
-      this->ResultType = Other.ResultType;
-      this->Value = Other.Value;
-    }
-    return *this;
-  }
+  SpirvOperand &operator=(const SpirvOperand &Other) = default;
 
   bool operator==(const SpirvOperand &Other) const {
     return Kind == Other.Kind && ResultType == Other.ResultType &&



More information about the cfe-commits mailing list