]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/33342 (ICE in dependent_type_p, at cp/pt.c:15081)
authorJason Merrill <jason@redhat.com>
Sun, 9 Sep 2007 18:58:52 +0000 (14:58 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Sun, 9 Sep 2007 18:58:52 +0000 (14:58 -0400)
        PR c++/33342
        * pt.c (most_specialized_class): Set processing_template_decl
        while tsubsting partial spec args.

From-SVN: r128304

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

index 5fafaadd3e90c25bfc9612921c7160417b542ae6..4800e52f7f421882b635f15f368f9bf59a6c7f4c 100644 (file)
@@ -1,3 +1,9 @@
+2007-09-08  Jason Merrill  <jason@redhat.com>
+
+       PR c++/33342
+       * pt.c (most_specialized_class): Set processing_template_decl
+       while tsubsting partial spec args.
+
 2007-09-06  Jason Merrill  <jason@redhat.com>
 
        * decl2.c (get_guard): Copy visibility from the guarded variable.
index 944f6ad7276edd758d63844079ef016aeac6e82f..a837ba2076dcec8856c12042674654fde2aebc71 100644 (file)
@@ -11576,6 +11576,8 @@ most_specialized_class (tree type, tree tmpl)
        {
          int i;
 
+         ++processing_template_decl;
+
          /* Discard the outer levels of args, and then substitute in the
             template args from the enclosing class.  */
          partial_spec_args = INNERMOST_TEMPLATE_ARGS (partial_spec_args);
@@ -11591,6 +11593,8 @@ most_specialized_class (tree type, tree tmpl)
          for (i = TREE_VEC_LENGTH (parms) - 1; i >= 0; --i)
            TREE_VEC_ELT (parms, i) =
              tsubst (TREE_VEC_ELT (parms, i), outer_args, tf_none, NULL_TREE);
+
+         --processing_template_decl;
        }
       spec_args = get_class_bindings (parms,
                                      partial_spec_args,