r293297. Cheers, Hans
On Thu, Jan 26, 2017 at 4:45 PM, Richard Smith <rich...@metafoo.co.uk> wrote: > Sure, why not. > > On 26 January 2017 at 15:56, Hans Wennborg <h...@chromium.org> wrote: >> >> A candidate for clang 4? >> >> On Thu, Jan 19, 2017 at 5:19 PM, Richard Smith via cfe-commits >> <cfe-commits@lists.llvm.org> wrote: >> > Author: rsmith >> > Date: Thu Jan 19 19:19:46 2017 >> > New Revision: 292561 >> > >> > URL: http://llvm.org/viewvc/llvm-project?rev=292561&view=rev >> > Log: >> > PR31701: Fix crash on invalid caused by parsing a dependent initializer >> > when we >> > don't know we're in a dependent context. >> > >> > Modified: >> > cfe/trunk/lib/AST/ASTContext.cpp >> > cfe/trunk/test/SemaCXX/constant-expression.cpp >> > >> > Modified: cfe/trunk/lib/AST/ASTContext.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=292561&r1=292560&r2=292561&view=diff >> > >> > ============================================================================== >> > --- cfe/trunk/lib/AST/ASTContext.cpp (original) >> > +++ cfe/trunk/lib/AST/ASTContext.cpp Thu Jan 19 19:19:46 2017 >> > @@ -9021,7 +9021,8 @@ bool ASTContext::DeclMustBeEmitted(const >> > >> > // Variables that have initialization with side-effects are required. >> > if (VD->getInit() && VD->getInit()->HasSideEffects(*this) && >> > - !VD->evaluateValue()) >> > + // We can get a value-dependent initializer during error >> > recovery. >> > + (VD->getInit()->isValueDependent() || !VD->evaluateValue())) >> > return true; >> > >> > // Likewise, variables with tuple-like bindings are required if their >> > >> > Modified: cfe/trunk/test/SemaCXX/constant-expression.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/constant-expression.cpp?rev=292561&r1=292560&r2=292561&view=diff >> > >> > ============================================================================== >> > --- cfe/trunk/test/SemaCXX/constant-expression.cpp (original) >> > +++ cfe/trunk/test/SemaCXX/constant-expression.cpp Thu Jan 19 19:19:46 >> > 2017 >> > @@ -143,3 +143,14 @@ namespace rdar16064952 { >> > } >> > >> > char PR17381_ice = 1000000 * 1000000; // expected-warning {{overflow}} >> > expected-warning {{changes value}} >> > + >> > +namespace PR31701 { >> > + struct C { >> > + template<int i> static int n; // expected-warning {{extension}} >> > + }; >> > + template <int M> class D; >> > + template <int M> >> > + template<int i> void D<M>::set() { // expected-error {{from class >> > 'D<M>' without definition}} >> > + const C c = C::n<i>; >> > + } >> > +} >> > >> > >> > _______________________________________________ >> > cfe-commits mailing list >> > cfe-commits@lists.llvm.org >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits