Author: hans Date: Fri Jan 27 10:26:10 2017 New Revision: 293297 URL: http://llvm.org/viewvc/llvm-project?rev=293297&view=rev Log: Merging r292561: ------------------------------------------------------------------------ r292561 | rsmith | 2017-01-19 17:19:46 -0800 (Thu, 19 Jan 2017) | 3 lines
PR31701: Fix crash on invalid caused by parsing a dependent initializer when we don't know we're in a dependent context. ------------------------------------------------------------------------ Modified: cfe/branches/release_40/ (props changed) cfe/branches/release_40/lib/AST/ASTContext.cpp cfe/branches/release_40/test/SemaCXX/constant-expression.cpp Propchange: cfe/branches/release_40/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Jan 27 10:26:10 2017 @@ -1,4 +1,4 @@ /cfe/branches/type-system-rewrite:134693-134817 -/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292247,292265,292497,292555,292558-292559,292800,292847,292874,292991 +/cfe/trunk:291850,291853,291865,291871,291877,291879,291881,291907,291955,291964,292032,292052,292183,292247,292265,292497,292555,292558-292559,292561,292800,292847,292874,292991 /cfe/trunk/test:170344 /cfe/trunk/test/SemaTemplate:126920 Modified: cfe/branches/release_40/lib/AST/ASTContext.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/lib/AST/ASTContext.cpp?rev=293297&r1=293296&r2=293297&view=diff ============================================================================== --- cfe/branches/release_40/lib/AST/ASTContext.cpp (original) +++ cfe/branches/release_40/lib/AST/ASTContext.cpp Fri Jan 27 10:26:10 2017 @@ -9025,7 +9025,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/branches/release_40/test/SemaCXX/constant-expression.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_40/test/SemaCXX/constant-expression.cpp?rev=293297&r1=293296&r2=293297&view=diff ============================================================================== --- cfe/branches/release_40/test/SemaCXX/constant-expression.cpp (original) +++ cfe/branches/release_40/test/SemaCXX/constant-expression.cpp Fri Jan 27 10:26:10 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>; + } +} _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits