]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/58466 (ICE in cxx_eval_constant_expression)
authorPaolo Carlini <paolo.carlini@oracle.com>
Fri, 18 Oct 2013 21:24:05 +0000 (21:24 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 18 Oct 2013 21:24:05 +0000 (21:24 +0000)
/cp
2013-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58466
* pt.c (most_specialized_class): Bump processing_template_decl for
get_class_bindings.

/testsuite
2013-10-18  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/58466
* g++.dg/cpp0x/variadic145.C: New.

From-SVN: r203836

gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/variadic145.C [new file with mode: 0644]

index 2ef2978e1fa2d8ef3bc130b79ed44b517b8a8d81..1da821b727591af03cfa8eb3bd68f14b068fba1f 100644 (file)
@@ -1,3 +1,9 @@
+2013-10-18  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58466
+       * pt.c (most_specialized_class): Bump processing_template_decl for
+       get_class_bindings.
+
 2013-10-18  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * parser.c (cp_parser_lookup_name): Tidy.
index e9c3ce2ab99e2b10467dc53e8970d52281c45a42..e04bdcc81cb63f0febeb076ed638b7da99c16197 100644 (file)
@@ -18615,10 +18615,15 @@ most_specialized_class (tree type, tree tmpl, tsubst_flags_t complain)
       if (spec_tmpl == error_mark_node)
        return error_mark_node;
 
+      ++processing_template_decl;
+
       tree parms = DECL_INNERMOST_TEMPLATE_PARMS (spec_tmpl);
       spec_args = get_class_bindings (tmpl, parms,
                                      partial_spec_args,
                                      args);
+
+      --processing_template_decl;
+
       if (spec_args)
        {
          if (outer_args)
index f92ac71eefe8ad412eba435aaa5c47f514c69f40..823b8efee3eb7c8ef9ea29783af0ff0dc9b3bebd 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-18  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/58466
+       * g++.dg/cpp0x/variadic145.C: New.
+
 2013-10-18  Andrew MacLeod  <amacleod@redhat.com>
 
        * g++.dg/plugin/header_plugin.c: Don't include tree-flow.h.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic145.C b/gcc/testsuite/g++.dg/cpp0x/variadic145.C
new file mode 100644 (file)
index 0000000..65e4607
--- /dev/null
@@ -0,0 +1,10 @@
+// PR c++/58466
+// { dg-do compile { target c++11 } }
+
+template<char, char...> struct A;
+
+template<typename> struct B;
+
+template<char... C> struct B<A<C...>> {};
+
+B<A<'X'>> b;        // { dg-error "incomplete type" }