llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tools-extra

Author: None (serge-sans-paille)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/184072.diff


2 Files Affected:

- (modified) clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp 
(+5-1) 
- (modified) 
clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp (+14) 


``````````diff
diff --git a/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp 
b/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp
index d6be91b86eb8c..8b7878399fc31 100644
--- a/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp
+++ b/clang-tools-extra/clang-tidy/performance/UseStdMoveCheck.cpp
@@ -106,8 +106,12 @@ void UseStdMoveCheck::check(const MatchFinder::MatchResult 
&Result) {
 
       const Stmt *EltStmt = Elt.castAs<CFGStmt>().getStmt();
       if (EltStmt == AssignExpr) {
+        StringRef AssignValueName = AssignValue->getDecl()->getName();
         diag(AssignValue->getBeginLoc(), "'%0' could be moved here")
-            << AssignValue->getDecl()->getName();
+            << AssignValueName
+            << FixItHint::CreateReplacement(
+                   AssignValue->getLocation(),
+                   ("std::move(" + AssignValueName + ")").str());
         break;
       }
       // The reference is being referenced after the assignment, bail out.
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
index d823fa75720af..4492d976c37bd 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/performance/use-std-move.cpp
@@ -42,6 +42,7 @@ void use(T&) {}
 void ConvertibleNonTrivialMoveAssign(NonTrivialMoveAssign& target, 
NonTrivialMoveAssign source) {
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 }
 
 void NonProfitableNonTrivialMoveAssignPointer(NonTrivialMoveAssign*& target, 
NonTrivialMoveAssign* source) {
@@ -52,6 +53,7 @@ void 
NonProfitableNonTrivialMoveAssignPointer(NonTrivialMoveAssign*& target, Non
 void ConvertibleNonTrivialMoveAssignFromLValue(NonTrivialMoveAssign& target, 
NonTrivialMoveAssign&& source) {
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 }
 
 // Check moving already moved values
@@ -74,12 +76,14 @@ struct SomeRecord {
 void ConvertibleNonTrivialMoveAssignWithinMethod(NonTrivialMoveAssign& target, 
NonTrivialMoveAssign source) {
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 }
 };
 
 auto ConvertibleNonTrivialMoveAssignWithinLambda = [](NonTrivialMoveAssign& 
target, NonTrivialMoveAssign source) {
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 };
 
 void SomeFunction(NonTrivialMoveAssign source0, NonTrivialMoveAssign const 
&source1) {
@@ -105,6 +109,7 @@ void 
ConvertibleNonTrivialMoveAssignShadowing(NonTrivialMoveAssign& target, NoMo
     NonTrivialMoveAssign source;
     // CHECK-MESSAGES: [[@LINE+1]]:14: warning: 'source' could be moved here 
[performance-use-std-move]
     target = source;
+    // CHECK-FIXES: target = std::move(source);
   }
 }
 
@@ -147,6 +152,7 @@ void 
NonConvertibleNonTrivialMoveAssignFromConst(NonTrivialMoveAssign& target) {
   NonTrivialMoveAssign source;
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 }
 
 void NonConvertibleNonTrivialMoveAssignFromStatic(NonTrivialMoveAssign& 
target) {
@@ -189,6 +195,7 @@ void 
ConvertibleNonTrivialMoveAssignToStatic(NonTrivialMoveAssign source) {
   static NonTrivialMoveAssign target;
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 }
 
 struct ConvertibleNonTrivialMoveAssignToMember {
@@ -196,6 +203,7 @@ struct ConvertibleNonTrivialMoveAssignToMember {
   void NonConvertibleNonTrivialMoveAssignFromStatic(NonTrivialMoveAssign 
source) {
     // CHECK-MESSAGES: [[@LINE+1]]:14: warning: 'source' could be moved here 
[performance-use-std-move]
     target = source;
+    // CHECK-FIXES: target = std::move(source);
   }
 };
 
@@ -203,18 +211,21 @@ void 
ConvertibleNonTrivialMoveAssignToExtern(NonTrivialMoveAssign source) {
   extern NonTrivialMoveAssign target;
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 }
 
 void ConvertibleNonTrivialMoveAssignToTLS(NonTrivialMoveAssign source) {
   thread_local NonTrivialMoveAssign target;
   // CHECK-MESSAGES: [[@LINE+1]]:12: warning: 'source' could be moved here 
[performance-use-std-move]
   target = source;
+  // CHECK-FIXES: target = std::move(source);
 }
 
 NonTrivialMoveAssign global_target;
 void ConvertibleNonTrivialMoveAssignToGlobal(NonTrivialMoveAssign source) {
   // CHECK-MESSAGES: [[@LINE+1]]:19: warning: 'source' could be moved here 
[performance-use-std-move]
   global_target = source;
+  // CHECK-FIXES: global_target = std::move(source);
 }
 
 void NonConvertibleNonTrivialMoveAssignRValue(NonTrivialMoveAssign& target, 
NonTrivialMoveAssign const& source) {
@@ -234,6 +245,7 @@ void ConvertibleNonTrivialMoveAssignWithBranching(bool 
cond, NonTrivialMoveAssig
   if(cond) {
     // CHECK-MESSAGES: [[@LINE+1]]:14: warning: 'source' could be moved here 
[performance-use-std-move]
     target = source;
+    // CHECK-FIXES: target = std::move(source);
   }
 }
 
@@ -249,11 +261,13 @@ void ConvertibleNonTrivialMoveAssignBothBranches(bool 
cond, NonTrivialMoveAssign
   if(cond) {
     // CHECK-MESSAGES: [[@LINE+1]]:14: warning: 'source' could be moved here 
[performance-use-std-move]
     target = source;
+    // CHECK-FIXES: target = std::move(source);
   }
   else {
     source.stuff();
     // CHECK-MESSAGES: [[@LINE+1]]:14: warning: 'source' could be moved here 
[performance-use-std-move]
     target = source;
+    // CHECK-FIXES: target = std::move(source);
   }
 }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/184072
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to