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

Reply via email to