[clang-tools-extra] [clang-tidy] Fix crash in misc-static-initialization-cycle (PR #198155)

via cfe-commits cfe-commits at lists.llvm.org
Sun May 17 01:37:13 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tidy

Author: Zeyi Xu (zeyi2)

<details>
<summary>Changes</summary>

This commit adds handling for null Decl pointers while collecting variable uses.

Closes #<!-- -->198150

---
Full diff: https://github.com/llvm/llvm-project/pull/198155.diff


2 Files Affected:

- (modified) clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp (+1-1) 
- (modified) clang-tools-extra/test/clang-tidy/checkers/misc/static-initialization-cycle.cpp (+8) 


``````````diff
diff --git a/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp b/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp
index eb230983c8a7a..3d1fc88e7233a 100644
--- a/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/StaticInitializationCycleCheck.cpp
@@ -193,7 +193,7 @@ class VarUseCollector : public DynamicRecursiveASTVisitor {
   }
   bool TraverseAttr(Attr *At) override { return true; }
   bool TraverseDecl(Decl *D) override {
-    if (DC && DC->containsDecl(D))
+    if (D && DC && DC->containsDecl(D))
       return DynamicRecursiveASTVisitor::TraverseDecl(D);
     return true;
   }
diff --git a/clang-tools-extra/test/clang-tidy/checkers/misc/static-initialization-cycle.cpp b/clang-tools-extra/test/clang-tidy/checkers/misc/static-initialization-cycle.cpp
index 2e5af81b6af8c..603edd419880a 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/misc/static-initialization-cycle.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/misc/static-initialization-cycle.cpp
@@ -120,6 +120,14 @@ int f1() {
 int S::A = f1();
 }
 
+namespace catch_all_handler {
+void f() {
+  try {
+  } catch (...) {
+  }
+}
+}
+
 namespace recursive_calls {
 int f2();
 int f1() {

``````````

</details>


https://github.com/llvm/llvm-project/pull/198155


More information about the cfe-commits mailing list