re PR c++/66405 (ICE: in tsubst, at cp/pt.c:11984)
authorJason Merrill <jason@redhat.com>
Fri, 5 Jun 2015 19:13:56 +0000 (15:13 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 5 Jun 2015 19:13:56 +0000 (15:13 -0400)
PR c++/66405
* pt.c (type_dependent_expression_p): EXPR_PACK_EXPANSION is
dependent even if it has a type.

From-SVN: r224162

gcc/cp/ChangeLog
gcc/cp/pt.c

index bb59bcc70fc43dc6a20380d6548f673251321c40..e9a78b3ccb6ebfa62e291196a439a9c62adb3371 100644 (file)
@@ -1,3 +1,9 @@
+2015-06-05  Jason Merrill  <jason@redhat.com>
+
+       PR c++/66405
+       * pt.c (type_dependent_expression_p): EXPR_PACK_EXPANSION is
+       dependent even if it has a type.
+
 2015-06-05  Aldy Hernandez  <aldyh@redhat.com>
 
        * cp-objcp-common.c: Adjust comment for
index ec33d96fc6fb6f4fecc9c85785fc58432744dea2..87b35fa99dee7e388c06b3cafdf55654a0789b62 100644 (file)
@@ -21442,6 +21442,10 @@ type_dependent_expression_p (tree expression)
       && variable_template_p (DECL_TI_TEMPLATE (expression)))
     return any_dependent_template_arguments_p (DECL_TI_ARGS (expression));
 
+  /* Always dependent, on the number of arguments if nothing else.  */
+  if (TREE_CODE (expression) == EXPR_PACK_EXPANSION)
+    return true;
+
   if (TREE_TYPE (expression) == unknown_type_node)
     {
       if (TREE_CODE (expression) == ADDR_EXPR)
@@ -21459,10 +21463,6 @@ type_dependent_expression_p (tree expression)
       if (TREE_CODE (expression) == SCOPE_REF)
        return false;
 
-      /* Always dependent, on the number of arguments if nothing else.  */
-      if (TREE_CODE (expression) == EXPR_PACK_EXPANSION)
-       return true;
-
       if (BASELINK_P (expression))
        {
          if (BASELINK_OPTYPE (expression)