https://github.com/gamesh411 created 
https://github.com/llvm/llvm-project/pull/200173

…d-return-value

Casting to (void) is the standard C/C++ idiom for intentionally discarding a 
return value. The check should respect this by default rather than requiring 
users to opt in.

Both coding standard aliases that used this check (cert-err33-c and the 
now-removed hicpp-ignored-remove-result) overrode AllowCastToVoid to true, 
confirming that (void) casts are a legitimate suppression mechanism.

From 35729ae54fc95b2d6e5687e51049b56ce6e3e76b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Endre=20F=C3=BCl=C3=B6p?= <[email protected]>
Date: Thu, 28 May 2026 14:55:21 +0200
Subject: [PATCH] [clang-tidy] Change AllowCastToVoid default to true in
 bugprone-unused-return-value

Casting to (void) is the standard C/C++ idiom for intentionally
discarding a return value. The check should respect this by default
rather than requiring users to opt in.

Both coding standard aliases that used this check (cert-err33-c and the
now-removed hicpp-ignored-remove-result) overrode AllowCastToVoid to
true, confirming that (void) casts are a legitimate suppression
mechanism.
---
 .../clang-tidy/bugprone/UnusedReturnValueCheck.cpp            | 2 +-
 clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp          | 1 -
 clang-tools-extra/docs/ReleaseNotes.rst                       | 4 ++++
 .../docs/clang-tidy/checks/bugprone/unused-return-value.rst   | 2 +-
 .../checkers/bugprone/unused-return-value-custom.cpp          | 1 -
 .../checkers/bugprone/unused-return-value-remove.cpp          | 2 +-
 .../test/clang-tidy/checkers/bugprone/unused-return-value.cpp | 3 +--
 7 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp
index c5792cd17b9b2..9156c32078e9c 100644
--- a/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/UnusedReturnValueCheck.cpp
@@ -145,7 +145,7 @@ UnusedReturnValueCheck::UnusedReturnValueCheck(StringRef 
Name,
                                             "^::std::errc$;"
                                             "^::std::expected$;"
                                             "^::boost::system::error_code$"))),
-      AllowCastToVoid(Options.get("AllowCastToVoid", false)) {}
+      AllowCastToVoid(Options.get("AllowCastToVoid", true)) {}
 
 UnusedReturnValueCheck::UnusedReturnValueCheck(
     StringRef Name, ClangTidyContext *Context,
diff --git a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp 
b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
index ee1ce59d80b0d..4e952b59cdfe6 100644
--- a/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
+++ b/clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp
@@ -353,7 +353,6 @@ class CERTModule : public ClangTidyModule {
     Opts["cert-arr39-c.WarnOnSizeOfPointerToAggregate"] = "false";
     Opts["cert-dcl16-c.NewSuffixes"] = "L;LL;LU;LLU";
     Opts["cert-err33-c.CheckedFunctions"] = CertErr33CCheckedFunctions;
-    Opts["cert-err33-c.AllowCastToVoid"] = "true";
     Opts["cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField"] = "false";
     Opts["cert-str34-c.DiagnoseSignedUnsignedCharComparisons"] = "false";
     return Options;
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index 0b3bb091307e7..168737c5c4e70 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -441,6 +441,10 @@ Changes in existing checks
   - Avoid false positives when moving object is reinitialized via the base
     class's ``operator=``.
 
+- Improved :doc:`bugprone-unused-return-value
+  <clang-tidy/checks/bugprone/unused-return-value>` check by changing the
+  default of the ``AllowCastToVoid`` option from `false` to `true`.
+
 - Improved :doc:`cppcoreguidelines-avoid-capturing-lambda-coroutines
   <clang-tidy/checks/cppcoreguidelines/avoid-capturing-lambda-coroutines>`
   check by adding the `AllowExplicitObjectParameters` option. When enabled,
diff --git 
a/clang-tools-extra/docs/clang-tidy/checks/bugprone/unused-return-value.rst 
b/clang-tools-extra/docs/clang-tidy/checks/bugprone/unused-return-value.rst
index 725403a6eb818..9395d9fef5b47 100644
--- a/clang-tools-extra/docs/clang-tidy/checks/bugprone/unused-return-value.rst
+++ b/clang-tools-extra/docs/clang-tidy/checks/bugprone/unused-return-value.rst
@@ -63,7 +63,7 @@ Options
 
 .. option:: AllowCastToVoid
 
-   Controls whether casting return values to ``void`` is permitted. Default: 
`false`.
+   Controls whether casting return values to ``void`` is permitted. Default: 
`true`.
 
 :doc:`cert-err33-c <../cert/err33-c>` is an alias of this check that checks a
 fixed and large set of standard library functions.
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-custom.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-custom.cpp
index 3035183573ccd..5bf21d20d3302 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-custom.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-custom.cpp
@@ -53,7 +53,6 @@ void warning() {
   // CHECK-MESSAGES: [[@LINE-1]]:4: warning: the value returned by this 
function should not be disregarded; neglecting it may lead to errors
 
   (void)fun();
-  // CHECK-MESSAGES: [[@LINE-1]]:9: warning: the value returned by this 
function should not be disregarded; neglecting it may lead to errors
 
   ns::Outer::Inner ObjA1;
   ObjA1.memFun();
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-remove.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-remove.cpp
index 2934db6dd2d2c..fee75469ca297 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-remove.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value-remove.cpp
@@ -1,5 +1,5 @@
 // RUN: %check_clang_tidy %s bugprone-unused-return-value %t -- \
-// RUN:   -config='{CheckOptions: 
{bugprone-unused-return-value.CheckedFunctions: 
"^::std::remove$;^::std::remove_if$;^::std::unique$", 
bugprone-unused-return-value.CheckedReturnTypes: "", 
bugprone-unused-return-value.AllowCastToVoid: true}}'
+// RUN:   -config='{CheckOptions: 
{bugprone-unused-return-value.CheckedFunctions: 
"^::std::remove$;^::std::remove_if$;^::std::unique$", 
bugprone-unused-return-value.CheckedReturnTypes: ""}}'
 // RUN: %check_clang_tidy -check-suffixes=NOCAST %s 
bugprone-unused-return-value %t -- \
 // RUN:   -config='{CheckOptions: 
{bugprone-unused-return-value.CheckedFunctions: 
"^::std::remove$;^::std::remove_if$;^::std::unique$", 
bugprone-unused-return-value.CheckedReturnTypes: "", 
bugprone-unused-return-value.AllowCastToVoid: false}}'
 
diff --git 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp
index 3fa87b94dc6b4..9aaa8d3c8a35f 100644
--- 
a/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp
+++ 
b/clang-tools-extra/test/clang-tidy/checkers/bugprone/unused-return-value.cpp
@@ -1,5 +1,4 @@
-// RUN: %check_clang_tidy %s bugprone-unused-return-value %t -- \
-// RUN:   --config="{CheckOptions: 
{bugprone-unused-return-value.AllowCastToVoid: true}}" -- -fexceptions
+// RUN: %check_clang_tidy %s bugprone-unused-return-value %t -- -- -fexceptions
 #include <vector>
 #include <memory>
 

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

Reply via email to