================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits