[PATCH] D45059: [clang-tidy] Add check to catch comparisons in TEMP_FAILURE_RETRY
Jonas Toth via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Mar 31 01:30:58 PDT 2018
JonasToth added a comment.
Alright. Thank you for clarification :)
================
Comment at: clang-tidy/bugprone/ComparisonInTempFailureRetryCheck.cpp:75
+ const auto &Assign = *Result.Nodes.getNodeAs<BinaryOperator>("assign");
+ const auto &RHS = *cast<BinaryOperator>(Assign.getRHS()->IgnoreParenCasts());
+ assert(RHS.isComparisonOp());
----------------
You can match `RHS` in your matcher by adding another `bind` for the binaryOperator.
================
Comment at: clang-tidy/bugprone/ComparisonInTempFailureRetryCheck.cpp:76
+ const auto &RHS = *cast<BinaryOperator>(Assign.getRHS()->IgnoreParenCasts());
+ assert(RHS.isComparisonOp());
+
----------------
this assertion is redundant with the new matcher.
================
Comment at: clang-tidy/bugprone/ComparisonInTempFailureRetryCheck.cpp:78
+
+ diag(RHS.getOperatorLoc(),
+ "Top-level comparisons should be moved out of TEMP_FAILURE_RETRY");
----------------
You could even provide a fixit to do this. But this can be done in later patches, too.
================
Comment at: test/clang-tidy/bugprone-comparison-in-temp-failure-retry.c:1
+// RUN: %check_clang_tidy %s bugprone-comparison-in-temp-failure-retry %t
+
----------------
Could you please add a test with control structures, like loops you used in your example?
================
Comment at: test/clang-tidy/bugprone-comparison-in-temp-failure-retry.c:5
+ ({ \
+ typeof(x) __z; \
+ do \
----------------
I think you could add one test, that shows using `long int` instead of `typeof` is diagnosed, given glibc uses this approach (or even copy there macro)
https://reviews.llvm.org/D45059
More information about the cfe-commits
mailing list