[llvm-branch-commits] [cfe-branch] r293297 - Merging r292561:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jan 27 08:26:10 PST 2017


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>;
+  }
+}




More information about the llvm-branch-commits mailing list