================ @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits