[llvm-branch-commits] [cfe-branch] r155671 - in /cfe/branches/release_31: ./ lib/Parse/ParseTemplate.cpp lib/Sema/SemaTemplate.cpp test/SemaCXX/warn-unreachable.cpp test/SemaTemplate/default-expr-arguments.cpp

Bill Wendling isanbard at gmail.com
Thu Apr 26 16:03:48 PDT 2012


Author: void
Date: Thu Apr 26 18:03:48 2012
New Revision: 155671

URL: http://llvm.org/viewvc/llvm-project?rev=155671&view=rev
Log:
Merging r155670:
------------------------------------------------------------------------
r155670 | efriedma | 2012-04-26 15:43:24 -0700 (Thu, 26 Apr 2012) | 3 lines

Add a missing ExpressionEvaluationContext for template default arguments.  Fixes PR12581.


------------------------------------------------------------------------

Modified:
    cfe/branches/release_31/   (props changed)
    cfe/branches/release_31/lib/Parse/ParseTemplate.cpp
    cfe/branches/release_31/lib/Sema/SemaTemplate.cpp
    cfe/branches/release_31/test/SemaCXX/warn-unreachable.cpp   (props changed)
    cfe/branches/release_31/test/SemaTemplate/default-expr-arguments.cpp

Propchange: cfe/branches/release_31/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 26 18:03:48 2012
@@ -1,3 +1,3 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:155076,155279,155342,155534-155535,155576
+/cfe/trunk:155076,155279,155342,155534-155535,155576,155670
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_31/lib/Parse/ParseTemplate.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_31/lib/Parse/ParseTemplate.cpp?rev=155671&r1=155670&r2=155671&view=diff
==============================================================================
--- cfe/branches/release_31/lib/Parse/ParseTemplate.cpp (original)
+++ cfe/branches/release_31/lib/Parse/ParseTemplate.cpp Thu Apr 26 18:03:48 2012
@@ -652,6 +652,7 @@
     //   end of the template-parameter-list rather than a greater-than
     //   operator.
     GreaterThanIsOperatorScope G(GreaterThanIsOperator, false);
+    EnterExpressionEvaluationContext Unevaluated(Actions, Sema::Unevaluated);
 
     DefaultArg = ParseAssignmentExpression();
     if (DefaultArg.isInvalid())

Modified: cfe/branches/release_31/lib/Sema/SemaTemplate.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_31/lib/Sema/SemaTemplate.cpp?rev=155671&r1=155670&r2=155671&view=diff
==============================================================================
--- cfe/branches/release_31/lib/Sema/SemaTemplate.cpp (original)
+++ cfe/branches/release_31/lib/Sema/SemaTemplate.cpp Thu Apr 26 18:03:48 2012
@@ -2546,6 +2546,7 @@
                                    SourceRange(TemplateLoc, RAngleLoc));
 
   Sema::ContextRAII SavedContext(SemaRef, Template->getDeclContext());
+  EnterExpressionEvaluationContext Unevaluated(SemaRef, Sema::Unevaluated);
   return SemaRef.SubstExpr(Param->getDefaultArgument(), AllTemplateArgs);
 }
 

Propchange: cfe/branches/release_31/test/SemaCXX/warn-unreachable.cpp
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 26 18:03:48 2012
@@ -1,2 +1,2 @@
 /cfe/branches/type-system-rewrite/test/SemaCXX/warn-unreachable.cpp:134693-134817
-/cfe/trunk/test/SemaCXX/warn-unreachable.cpp:121961,155076,155279,155342,155534-155535,155576
+/cfe/trunk/test/SemaCXX/warn-unreachable.cpp:121961,155076,155279,155342,155534-155535,155576,155670

Modified: cfe/branches/release_31/test/SemaTemplate/default-expr-arguments.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_31/test/SemaTemplate/default-expr-arguments.cpp?rev=155671&r1=155670&r2=155671&view=diff
==============================================================================
--- cfe/branches/release_31/test/SemaTemplate/default-expr-arguments.cpp (original)
+++ cfe/branches/release_31/test/SemaTemplate/default-expr-arguments.cpp Thu Apr 26 18:03:48 2012
@@ -292,3 +292,14 @@
     f();
   }
 }
+
+namespace PR12581 {
+  const int a = 0;
+  template < typename > struct A;
+  template < typename MatrixType, int =
+  A < MatrixType >::Flags ? : A < MatrixType >::Flags & a > class B;
+  void
+  fn1 ()
+  {
+  }
+}





More information about the llvm-branch-commits mailing list