aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-10-18 21:24:05 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-10-18 21:24:05 +0000
commit6e62a2b4e8d0342091bc35396c18688fdc9fd9cc (patch)
tree2c989b5adea59cfc1b910fc9c4db64a7dec46830
parent4484a35a86b8b80034c5b17b690c839103ed73b2 (diff)
downloadgcc-6e62a2b4e8d0342091bc35396c18688fdc9fd9cc.zip
gcc-6e62a2b4e8d0342091bc35396c18688fdc9fd9cc.tar.gz
gcc-6e62a2b4e8d0342091bc35396c18688fdc9fd9cc.tar.bz2
re PR c++/58466 (ICE in cxx_eval_constant_expression)
/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
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic145.C10
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2ef2978..1da821b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,11 @@
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.
2013-10-17 Andrew MacLeod <amacleod@redhat.com>
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index e9c3ce2..e04bdcc 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -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)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f92ac71..823b8ef 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..65e4607
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic145.C
@@ -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" }