[clang] [clang] Fix crashes when initializing constexpr int* with floating-point (PR #180376)
Samrudh Nelli via cfe-commits
cfe-commits at lists.llvm.org
Sat Feb 7 15:09:05 PST 2026
https://github.com/SamrudhNelli created https://github.com/llvm/llvm-project/pull/180376
Call isNullPointer() only when we are sure that Rvalue is a pointer.
Fixes #180313
>From 6009736c9f52e136483a9c5804cb8dfee3826031 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <samrudhnelli at gmail.com>
Date: Sun, 8 Feb 2026 04:33:08 +0530
Subject: [PATCH] [clang] Fix crashes when initializing constexpr int* with
floating-point
Call isNullPointer() only when we are sure that the Rvalue is a pointer.
---
clang/lib/Sema/SemaInit.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index ff278bc7471bd..3c19512595bae 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -8503,8 +8503,9 @@ ExprResult InitializationSequence::Perform(Sema &S,
Expr::EvalResult ER;
if (Entity.getType()->getAs<PointerType>() &&
CurInit.get()->EvaluateAsRValue(ER, S.Context) &&
- !ER.Val.isNullPointer()) {
+ (!ER.Val.isLValue() || !ER.Val.isNullPointer())) {
S.Diag(Kind.getLocation(), diag::err_c23_constexpr_pointer_not_null);
+ return ExprError();
}
}
More information about the cfe-commits
mailing list