https://github.com/IamYJLee updated https://github.com/llvm/llvm-project/pull/187452
>From 44205cbf91abd508c2f8737811d96458cb9e5a5c Mon Sep 17 00:00:00 2001 From: LeeYoungJoon <[email protected]> Date: Thu, 19 Mar 2026 16:39:14 +0900 Subject: [PATCH 1/3] [clang-tidy] Fix false positive in cert-ctr56-cpp(PointerArithmeticOnPolymorphicObjectCheck) - Add 'unless(isInstantiationDependent())' to the ArraySubscript matcher to skip expressions that are not yet resolved in templates. --- .../bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp index c21abad947912..ac886143b8d98 100644 --- a/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp @@ -53,7 +53,8 @@ void PointerArithmeticOnPolymorphicObjectCheck::registerMatchers( ? PointerExprWithVirtualMethod : PolymorphicPointerExpr; - const auto ArraySubscript = arraySubscriptExpr(hasBase(SelectedPointerExpr)); + const auto ArraySubscript = expr(arraySubscriptExpr(hasBase(SelectedPointerExpr)), + unless(isInstantiationDependent())); const auto BinaryOperators = binaryOperator(hasAnyOperatorName("+", "-", "+=", "-="), >From 14e6f24b3f4da29d4450334203d3718dc54e6579 Mon Sep 17 00:00:00 2001 From: LeeYoungJoon <[email protected]> Date: Thu, 19 Mar 2026 16:58:18 +0900 Subject: [PATCH 2/3] [clang-tidy] fix clang-format issues --- .../bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp index ac886143b8d98..ef5fee9f3d2c3 100644 --- a/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/PointerArithmeticOnPolymorphicObjectCheck.cpp @@ -53,8 +53,9 @@ void PointerArithmeticOnPolymorphicObjectCheck::registerMatchers( ? PointerExprWithVirtualMethod : PolymorphicPointerExpr; - const auto ArraySubscript = expr(arraySubscriptExpr(hasBase(SelectedPointerExpr)), - unless(isInstantiationDependent())); + const auto ArraySubscript = + expr(arraySubscriptExpr(hasBase(SelectedPointerExpr)), + unless(isInstantiationDependent())); const auto BinaryOperators = binaryOperator(hasAnyOperatorName("+", "-", "+=", "-="), >From 1a1a9d09715aecbbbb228a5584333cd26e0c2a26 Mon Sep 17 00:00:00 2001 From: LeeYoungJoon <[email protected]> Date: Mon, 23 Mar 2026 11:21:55 +0900 Subject: [PATCH 3/3] [clang-tidy] Add test case and mock header for std::map --- .../test/clang-tidy/checkers/Inputs/Headers/std/map | 11 +++++++++++ .../pointer-arithmetic-on-polymorphic-object-all.cpp | 12 ++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/map diff --git a/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/map b/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/map new file mode 100644 index 0000000000000..5bf4e91e577a6 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/checkers/Inputs/Headers/std/map @@ -0,0 +1,11 @@ +#ifndef _MAP_ +#define _MAP_ + +namespace std { +template <typename K, typename V> +struct map { + V &operator[](const K &); +}; +} // namespace std + +#endif // _MAP_ diff --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-all.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-all.cpp index caf24f79ad2d8..f8163a2fd3fb8 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-all.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/pointer-arithmetic-on-polymorphic-object-all.cpp @@ -1,5 +1,7 @@ // RUN: %check_clang_tidy %s bugprone-pointer-arithmetic-on-polymorphic-object %t -- +#include <map> + class Base { public: virtual ~Base() {} @@ -138,3 +140,13 @@ void typeAliases(BaseAlias *b, DerivedAlias *d, FinalDerivedAlias *fd, fdp += 1; // no-warning } + +template <typename T> +struct TemplateHolder : Base { + std::map<Base *, T> _map; + void test() { + auto &x = _map[this]; + // no-warning + (void)x; + } +}; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
