[clang] [Clang] Fix: Handle member pointer in `EmitNullabilityChecks` (PR #227738)

Eli Friedman via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 30 12:47:52 PDT 2026


================
@@ -783,7 +783,14 @@ void CodeGenFunction::EmitNullabilityCheck(LValue LHS, llvm::Value *RHS,
   auto CheckOrdinal = SanitizerKind::SO_NullabilityAssign;
   auto CheckHandler = SanitizerHandler::TypeMismatch;
   SanitizerDebugLocation SanScope(this, {CheckOrdinal}, CheckHandler);
-  llvm::Value *IsNotNull = Builder.CreateIsNotNull(RHS);
+  llvm::Value *IsNotNull;
+  if (RHS->getType()->isAggregateType()) {
----------------
efriedma-quic wrote:

This should be `if (auto *MPT = LHS.getType()->getAs<MemberPointerType>())` or something like that.  Consider:

```
struct S { int a; };
void f() {
  int S::* _Nonnull x  = nullptr;
}
```

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


More information about the cfe-commits mailing list