https://github.com/AmrDeveloper created 
https://github.com/llvm/llvm-project/pull/185309

Fix codegen for the MemberPoint with a nullptr value

>From bebc992176fabb0c263b3897dede7bd87fb1a7fd Mon Sep 17 00:00:00 2001
From: Amr Hesham <[email protected]>
Date: Sun, 8 Mar 2026 15:35:41 +0100
Subject: [PATCH] [CIR] Fix codegen for MemberPoint with nullptr value

---
 clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp      | 3 +++
 clang/test/CIR/CodeGen/pointer-to-data-member.cpp | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp 
b/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp
index b697ca5cd3f6d..338d64e323391 100644
--- a/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp
@@ -1897,6 +1897,9 @@ mlir::Attribute ConstantEmitter::tryEmitPrivate(const 
APValue &value,
     assert(!cir::MissingFeatures::cxxABI());
 
     const ValueDecl *memberDecl = value.getMemberPointerDecl();
+    if (!memberDecl)
+      return builder.getZeroInitAttr(cgm.convertType(destType));
+
     if (value.isMemberPointerToDerivedMember()) {
       cgm.errorNYI(
           "ConstExprEmitter::tryEmitPrivate member pointer to derived member");
diff --git a/clang/test/CIR/CodeGen/pointer-to-data-member.cpp 
b/clang/test/CIR/CodeGen/pointer-to-data-member.cpp
index acb413a95ba8f..78af6cf5bb8e6 100644
--- a/clang/test/CIR/CodeGen/pointer-to-data-member.cpp
+++ b/clang/test/CIR/CodeGen/pointer-to-data-member.cpp
@@ -12,6 +12,12 @@ struct Point {
   int z;
 };
 
+int Point::*ptr_none = nullptr;
+// CIR-BEFORE: cir.global external @ptr_none = #cir.data_member<null> : 
!cir.data_member<!s32i in !rec_Point>
+// CIR-AFTER: cir.global external @ptr_none = #cir.int<-1> : !s64i
+// LLVM: @ptr_none = global i64 -1
+// OGCG: @ptr_none = global i64 -1
+
 int Point::*pt_member = &Point::z;
 // CIR-BEFORE: cir.global external @pt_member = #cir.data_member<2> : 
!cir.data_member<!s32i in !rec_Point>
 // CIR-AFTER: cir.global external @pt_member = #cir.int<8> : !s64i

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to