[PATCH] D152713: [clang-tidy] Correct sizeof/alignas handling in misc-redundant-expression
Piotr Zegar via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Jul 1 09:24:58 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc1dc914a8ca2: [clang-tidy] Correct sizeof/alignas handling in misc-redundant-expression (authored by PiotrZSL).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152713/new/
https://reviews.llvm.org/D152713
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
@@ -843,3 +843,15 @@
return 2;
}
+
+namespace PR63096 {
+
+struct alignas(sizeof(int)) X {
+ int x;
+};
+
+static_assert(alignof(X) == sizeof(X));
+static_assert(sizeof(X) == sizeof(X));
+// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: both sides of operator are equivalent
+
+}
Index: clang-tools-extra/docs/ReleaseNotes.rst
===================================================================
--- clang-tools-extra/docs/ReleaseNotes.rst
+++ clang-tools-extra/docs/ReleaseNotes.rst
@@ -360,6 +360,10 @@
<clang-tidy/checks/misc/definitions-in-headers>` to avoid warning on
declarations inside anonymous namespaces.
+- Fixed false-positive in :doc:`misc-redundant-expression
+ <clang-tidy/checks/misc/redundant-expression>` check where expressions like
+ ``alignof`` or ``sizeof`` were incorrectly flagged as identical.
+
- Improved :doc:`misc-unused-parameters
<clang-tidy/checks/misc/unused-parameters>` check with new `IgnoreVirtual`
option to optionally ignore virtual methods.
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
@@ -144,8 +144,9 @@
const auto *RightUnaryExpr =
cast<UnaryExprOrTypeTraitExpr>(Right);
if (LeftUnaryExpr->isArgumentType() && RightUnaryExpr->isArgumentType())
- return LeftUnaryExpr->getArgumentType() ==
- RightUnaryExpr->getArgumentType();
+ return LeftUnaryExpr->getKind() == RightUnaryExpr->getKind() &&
+ LeftUnaryExpr->getArgumentType() ==
+ RightUnaryExpr->getArgumentType();
if (!LeftUnaryExpr->isArgumentType() && !RightUnaryExpr->isArgumentType())
return areEquivalentExpr(LeftUnaryExpr->getArgumentExpr(),
RightUnaryExpr->getArgumentExpr());
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D152713.536532.patch
Type: text/x-patch
Size: 2242 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230701/81a230bd/attachment.bin>
More information about the cfe-commits
mailing list