[clang] [clang][dataflow] Add test repro for a crash (PR #128065)

Jan Voung via cfe-commits cfe-commits at lists.llvm.org
Thu Feb 20 12:57:28 PST 2025


https://github.com/jvoung created https://github.com/llvm/llvm-project/pull/128065

An issue with looking up the "this" when a default init of
field2 refers to field1.


>From a7002fb5a61c2f6f3c4df2347b6d5f861bf45f8e Mon Sep 17 00:00:00 2001
From: Jan Voung <jvoung at gmail.com>
Date: Thu, 20 Feb 2025 19:40:16 +0000
Subject: [PATCH] [clang][dataflow] Add test repro for a crash

An issue with looking up the "this" when a default init of
field2 refers to field1.
---
 .../UncheckedOptionalAccessModelTest.cpp      | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/clang/unittests/Analysis/FlowSensitive/UncheckedOptionalAccessModelTest.cpp b/clang/unittests/Analysis/FlowSensitive/UncheckedOptionalAccessModelTest.cpp
index 19c3ff49eab27..6ece51d84cbff 100644
--- a/clang/unittests/Analysis/FlowSensitive/UncheckedOptionalAccessModelTest.cpp
+++ b/clang/unittests/Analysis/FlowSensitive/UncheckedOptionalAccessModelTest.cpp
@@ -3863,6 +3863,25 @@ TEST_P(UncheckedOptionalAccessTest, ConstBoolAccessorWithModInBetween) {
   )cc");
 }
 
+TEST_P(UncheckedOptionalAccessTest, ConstructorOtherStructField) {
+  // Repro for a crash.
+  ExpectDiagnosticsFor(R"cc(
+    #include "unchecked_optional_access_test.h"
+    struct NonTrivDtor {
+      NonTrivDtor(int x);
+      ~NonTrivDtor() {}
+    };
+    struct Other {
+      $ns::$optional<int> x = $ns::nullopt;
+      NonTrivDtor y = x.has_value() ? NonTrivDtor(*x) : NonTrivDtor(-1);
+    };
+    struct target {
+      target() { Other{}; }
+    };
+  )cc");
+}
+
+
 // FIXME: Add support for:
 // - constructors (copy, move)
 // - assignment operators (default, copy, move)



More information about the cfe-commits mailing list