Index: lib/AST/ExprConstant.cpp =================================================================== --- lib/AST/ExprConstant.cpp +++ lib/AST/ExprConstant.cpp @@ -6912,12 +6912,14 @@ // Initialize the elements. LValue ArrayElt = Subobject; ArrayElt.addArray(Info, E, CAT); - for (unsigned I = 0; I != N; ++I) + for (unsigned I = 0; I != N; ++I) { + BlockScopeRAII Scope(Info); if (!VisitCXXConstructExpr(E, ArrayElt, &Value->getArrayInitializedElt(I), CAT->getElementType()) || !HandleLValueArrayAdjustment(Info, E, ArrayElt, CAT->getElementType(), 1)) return false; + } return true; } Index: test/SemaCXX/constant-expression-cxx1y.cpp =================================================================== --- test/SemaCXX/constant-expression-cxx1y.cpp +++ test/SemaCXX/constant-expression-cxx1y.cpp @@ -1021,3 +1021,10 @@ } static_assert(evalNested(), ""); } // namespace PR19741 + +namespace PR34858 { +struct S { + constexpr S(const int & = 0) {} +}; +constexpr S s[2]; +}