================
@@ -938,3 +938,59 @@ template<typename T> bool OperatorWithNoDirectCallee(T t) {
   ExpensiveToCopyType a2 = a1;
   return a1 == t;
 }
+
+bool CopiedFromParmVarField(const Struct &crs, const Struct cs, Struct &rs, 
Struct s) {
+  const auto m1 = crs.Member;
+  // CHECK-MESSAGES: [[@LINE-1]]:14: warning: local copy 'm1' of the subobject 
'crs.Member' of type 'const ExpensiveToCopyType' is never modified; consider 
avoiding the copy
+  // CHECK-FIXES: const auto& m1 = crs.Member;
+  const auto m2 = cs.Member;
+  // CHECK-MESSAGES: [[@LINE-1]]:14: warning: local copy 'm2' of the subobject 
'cs.Member' of type 'const ExpensiveToCopyType' is never modified; consider 
avoiding the copy
+  // CHECK-FIXES: const auto& m2 = cs.Member;
+  const auto m3 = rs.Member;
+  const auto m4 = s.Member;
+  return m1 == m2 || m3 == m4;
+}
+
+const Struct GlobalS;
+bool CopiedFromVarField() {
+  const Struct crs;
+  Struct s;
+  const auto m1 = crs.Member;
+  // CHECK-MESSAGES: [[@LINE-1]]:14: warning: local copy 'm1' of the subobject 
'crs.Member' of type 'const ExpensiveToCopyType' is never modified; consider 
avoiding the copy
+  // CHECK-FIXES: const auto& m1 = crs.Member;
+  const auto m2 = s.Member;
+  const auto m3 = GlobalS.Member;
+  // CHECK-MESSAGES: [[@LINE-1]]:14: warning: local copy 'm3' of the subobject 
'GlobalS.Member' of type 'const ExpensiveToCopyType' is never modified; 
consider avoiding the copy
+  // CHECK-FIXES: const auto& m3 = GlobalS.Member;
+  return m1 == m2 || m2 == m3;
+}
+
+struct NestedStruct {
+  Struct s;
+};
+
+bool CopiedFromParmVarNestedField(const NestedStruct &ncrs, const NestedStruct 
ncs, NestedStruct &nrs, NestedStruct ns) {
+  const auto m1 = ncrs.s.Member;
+  // CHECK-MESSAGES: [[@LINE-1]]:14: warning:  local copy 'm1' of the 
subobject 'ncrs.s.Member' of type 'const ExpensiveToCopyType' is never 
modified; consider avoiding the copy
----------------
localspook wrote:

```suggestion
  // CHECK-MESSAGES: [[@LINE-1]]:14: warning: local copy 'm1' of the subobject 
'ncrs.s.Member' of type 'const ExpensiveToCopyType' is never modified; consider 
avoiding the copy
```

https://github.com/llvm/llvm-project/pull/151936
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to