================
@@ -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

Reply via email to