[PATCH] D41655: [clang-tidy] New check bugprone-unused-return-value

Alexander Kornienko via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 2 05:17:01 PST 2018


alexfh added inline comments.


================
Comment at: clang-tidy/bugprone/UnusedReturnValueCheck.cpp:36
+  Node.printQualifiedName(OS, Policy);
+  return llvm::Regex(RegExp).match(OS.str());
+}
----------------
Can we avoid creating the regex on each match? For example, by changing the parameter type to llvm::Regex. If we need the matcher at all - see the comment below.


================
Comment at: clang-tidy/bugprone/UnusedReturnValueCheck.cpp:45-48
+                            "^::std::async$|"
+                            "^::std::launder$|"
+                            "^::std::remove$|"
+                            "^::std::remove_if$|"
----------------
I strongly suspect that we could get away without regexs here. hasAnyName supports inline namespaces, so at least the first five entries here are covered. The main problem with std::unique_ptr<.*>::release is the need to match any template parameters. I *think*, we could adjust hasName to allow omitting template parameters (so that `std::unique_ptr::release` would match specializations of unique_ptr as well). The `empty` and `allocate` would need some research. Can we just list all specific classes where we care about `empty`? (Alternatively, can we match `empty` unqualified and check that it's somewhere inside `std`, but I don't like that much, since it would add inconsistency in how this check is configured.)


================
Comment at: clang-tidy/bugprone/UnusedReturnValueCheck.cpp:61
+      callExpr(callee(functionDecl(
+                   matchesInlinedName(FuncRegex),
+                   // Don't match void overloads of checked functions.
----------------
This is a rather expensive matcher and it is going to be run on each callExpr, which is a lot. Let's at least swap it with the `unless(returns(voidType()))` below to reduce the number of times it's called.


https://reviews.llvm.org/D41655





More information about the cfe-commits mailing list