[PATCH] D105479: [clang-tidy] [PR50069] readability-braces-around-statements doesn't work well with [[likely]] [[unlikely]]
MyDeveloperDay via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Jul 8 08:17:40 PDT 2021
MyDeveloperDay updated this revision to Diff 357229.
MyDeveloperDay added a comment.
Address the situation where we don't have braces after the `[[likely]]` on an if
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105479/new/
https://reviews.llvm.org/D105479
Files:
clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
clang-tools-extra/test/clang-tidy/checkers/readability-braces-around-statements-attributes.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/readability-braces-around-statements-attributes.cpp
===================================================================
--- /dev/null
+++ clang-tools-extra/test/clang-tidy/checkers/readability-braces-around-statements-attributes.cpp
@@ -0,0 +1,24 @@
+// RUN: %check_clang_tidy -std=c++20-or-later %s readability-braces-around-statements %t
+
+void test(bool b) {
+ if (b) {
+ return;
+ }
+ if (b) [[likely]] {
+ // CHECK-FIXES-NOT: if (b) { {{[[][[]}}likely{{[]][]]}} {
+ return;
+ }
+ if (b) [[unlikely]] {
+ // CHECK-FIXES-NOT: if (b) { {{[[][[]}}unlikely{{[]][]]}} {
+ return;
+ }
+
+ if (b) [[likely]]
+ // CHECK-FIXES: if (b) {{[[][[]}}likely{{[]][]]}} {
+ return;
+ // CHECK-FIXES: }
+ if (b) [[unlikely]]
+ // CHECK-FIXES: if (b) {{[[][[]}}unlikely{{[]][]]}} {
+ return;
+ // CHECK-FIXES: }
+}
Index: clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
+++ clang-tools-extra/clang-tidy/readability/BracesAroundStatementsCheck.cpp
@@ -186,6 +186,10 @@
bool BracesAroundStatementsCheck::checkStmt(
const MatchFinder::MatchResult &Result, const Stmt *S,
SourceLocation InitialLoc, SourceLocation EndLocHint) {
+
+ while (const auto *AS = dyn_cast<AttributedStmt>(S))
+ S = AS->getSubStmt();
+
// 1) If there's a corresponding "else" or "while", the check inserts "} "
// right before that token.
// 2) If there's a multi-line block comment starting on the same line after
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D105479.357229.patch
Type: text/x-patch
Size: 1654 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210708/ea5be852/attachment-0001.bin>
More information about the cfe-commits
mailing list