[clang] [Clang] Diagnose forming references to nullptr (PR #143667)

Eli Friedman via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 11 14:50:41 PDT 2025


================
@@ -5243,7 +5245,19 @@ static bool EvaluateVarDecl(EvalInfo &Info, const VarDecl *VD) {
   if (InitE->isValueDependent())
     return false;
 
-  if (!EvaluateInPlace(Val, Info, Result, InitE)) {
+  if (VD->getType()->isReferenceType() && InitE->isGLValue()) {
+    if (!EvaluateLValue(InitE, Result, Info))
+      return false;
+    CompleteObject Obj = findCompleteObject(
+        Info, InitE, AK_CheckReferenceInitialization, Result, InitE->getType());
+    if (Result.Designator.isOnePastTheEnd()) {
+      Info.FFDiag(InitE, diag::note_constexpr_access_past_end)
+          << AK_CheckReferenceInitialization;
----------------
efriedma-quic wrote:

It looks like this is the only place we're using AK_CheckReferenceInitialization?  Should we be using it for other places we do reference binding? (aggregate initialization, constructors, calls, etc.).

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


More information about the cfe-commits mailing list