llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Amr Hesham (AmrDeveloper) <details> <summary>Changes</summary> Fix codegen for the MemberPoint with a nullptr value --- Full diff: https://github.com/llvm/llvm-project/pull/185309.diff 2 Files Affected: - (modified) clang/lib/CIR/CodeGen/CIRGenExprConstant.cpp (+3) - (modified) clang/test/CIR/CodeGen/pointer-to-data-member.cpp (+6) ``````````diff 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 `````````` </details> https://github.com/llvm/llvm-project/pull/185309 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
