[PATCH] D122535: [clang-tidy] Never consider assignments as equivalent in `misc-redundant-expression` check
Fabian Wolff via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Apr 12 07:08:12 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa18634b74fc0: [clang-tidy] Never consider assignments as equivalent in `misc-redundant… (authored by fwolff).
Changed prior to commit:
https://reviews.llvm.org/D122535?vs=418420&id=422222#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D122535/new/
https://reviews.llvm.org/D122535
Files:
clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
clang-tools-extra/docs/ReleaseNotes.rst
clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/misc-redundant-expression.cpp
@@ -831,3 +831,15 @@
};
} // namespace no_crash
+
+int TestAssignSideEffect(int i) {
+ int k = i;
+
+ if ((k = k + 1) != 1 || (k = k + 1) != 2)
+ return 0;
+
+ if ((k = foo(0)) != 1 || (k = foo(0)) != 2)
+ return 1;
+
+ return 2;
+}
Index: clang-tools-extra/docs/ReleaseNotes.rst
===================================================================
--- clang-tools-extra/docs/ReleaseNotes.rst
+++ clang-tools-extra/docs/ReleaseNotes.rst
@@ -132,7 +132,7 @@
the vector is a member of a structure.
- Fixed a false positive in :doc:`readability-non-const-parameter
- <clang-tidy/checks/readability-non-const-parameter>` when the parameter is referenced by an lvalue
+ <clang-tidy/checks/readability-non-const-parameter>` when the parameter is referenced by an lvalue.
- Fixed a crash in :doc:`readability-const-return-type
<clang-tidy/checks/readability-const-return-type>` when a pure virtual function
@@ -150,6 +150,9 @@
Fixed an issue when there was already an initializer in the constructor and
the check would try to create another initializer for the same member.
+- Fixed a false positive in :doc:`misc-redundant-expression <clang-tidy/checks/misc-redundant-expression>`
+ involving assignments in conditions. This fixes `Issue 35853 <https://github.com/llvm/llvm-project/issues/35853>`_.
+
Removed checks
^^^^^^^^^^^^^^
Index: clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
+++ clang-tools-extra/clang-tidy/misc/RedundantExpressionCheck.cpp
@@ -134,6 +134,8 @@
return cast<UnaryOperator>(Left)->getOpcode() ==
cast<UnaryOperator>(Right)->getOpcode();
case Stmt::BinaryOperatorClass:
+ if (cast<BinaryOperator>(Left)->isAssignmentOp())
+ return false;
return cast<BinaryOperator>(Left)->getOpcode() ==
cast<BinaryOperator>(Right)->getOpcode();
case Stmt::UnaryExprOrTypeTraitExprClass:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D122535.422222.patch
Type: text/x-patch
Size: 2331 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220412/06941ad8/attachment.bin>
More information about the cfe-commits
mailing list