https://github.com/and2049 created https://github.com/llvm/llvm-project/pull/228666
Skip synthetic parentheses with identical source locations in `readability-redundant-parentheses`. This also stops `__builtin_dump_struct(&s, printf)` from being rewritten to `(&s, printf)` and stops variables being deleted from OpenMP `linear` clauses. Fixes #224705. >From d90c4699880f29568c86b7c84b80b105a6677791 Mon Sep 17 00:00:00 2001 From: Andre Sun <[email protected]> Date: Sat, 3 Oct 2026 02:13:12 -0400 Subject: [PATCH] [clang-tidy] Fix redundant-parentheses diagnosing synthetic parentheses Fixes #224705. --- .../readability/RedundantParenthesesCheck.cpp | 2 ++ .../readability/redundant-parentheses-openmp.cpp | 8 ++++++++ .../checkers/readability/redundant-parentheses.cpp | 14 ++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses-openmp.cpp diff --git a/clang-tools-extra/clang-tidy/readability/RedundantParenthesesCheck.cpp b/clang-tools-extra/clang-tidy/readability/RedundantParenthesesCheck.cpp index bc1d10586da8abb..75a11ffc02503b6 100644 --- a/clang-tools-extra/clang-tidy/readability/RedundantParenthesesCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/RedundantParenthesesCheck.cpp @@ -93,6 +93,8 @@ void RedundantParenthesesCheck::registerMatchers(MatchFinder *Finder) { void RedundantParenthesesCheck::check(const MatchFinder::MatchResult &Result) { const auto *PE = Result.Nodes.getNodeAs<ParenExpr>("dup"); + if (PE->getLParen() == PE->getRParen()) + return; diag(PE->getBeginLoc(), "redundant parentheses around expression") << createSpacedRemoval(PE->getLParen(), *Result.SourceManager, getLangOpts()) diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses-openmp.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses-openmp.cpp new file mode 100644 index 000000000000000..98e9c36fb0a8634 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses-openmp.cpp @@ -0,0 +1,8 @@ +// RUN: %check_clang_tidy %s readability-redundant-parentheses %t -- -- -fopenmp=libomp + +void linearClause(int *a, int n) { + int i = 0; +#pragma omp simd linear(i) + for (int k = 0; k < n; ++k) + a[k] = i; +} diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses.cpp index c6275be9f249880..12286cd513f8533 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/readability/redundant-parentheses.cpp @@ -74,6 +74,20 @@ void ignoreStdMaxMin() { (std::min)(1,2); } +int global = 0; +template <int &R> int &referenceTemplateArgument() { + return R; +} +int &useReferenceTemplateArgument() { + return referenceTemplateArgument<global>(); +} + +extern "C" int printf(const char *, ...); +struct Dumped { int x; }; +void dumpStruct(Dumped *d) { + __builtin_dump_struct(d, printf); +} + struct Foo { bool x; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
