aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2014-01-29 17:54:51 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2014-01-29 17:54:51 +0000
commite1e30986f9d8089f1814e56c15caa6c15a65b885 (patch)
tree9e9581723e5743c574534996cf6bd88b0ced68ed
parent53d7df935178b56fd024500e1dcd27b8ffad11bd (diff)
downloadgcc-e1e30986f9d8089f1814e56c15caa6c15a65b885.zip
gcc-e1e30986f9d8089f1814e56c15caa6c15a65b885.tar.gz
gcc-e1e30986f9d8089f1814e56c15caa6c15a65b885.tar.bz2
re PR c++/58674 ([c++11] ICE with template using declaration)
/cp 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58674 * pt.c (instantiate_template_1): Check for error_mark_node the second argument too. /testsuite 2014-01-29 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58674 * g++.dg/cpp0x/pr58674.C: New. From-SVN: r207275
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr58674.C18
4 files changed, 32 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 594861b..ff6493a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58674
+ * pt.c (instantiate_template_1): Check for error_mark_node the second
+ argument too.
+
2014-01-29 Jason Merrill <jason@redhat.com>
PR c++/59916
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 7f1b6d5..ce679f6 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -15258,6 +15258,9 @@ instantiate_template_1 (tree tmpl, tree orig_args, tsubst_flags_t complain)
return NULL_TREE;
}
+ if (targ_ptr == error_mark_node)
+ return error_mark_node;
+
/* Check to see if we already have this specialization. */
gen_tmpl = most_general_template (tmpl);
if (tmpl != gen_tmpl)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0b832ad..ce325ca 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-29 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58674
+ * g++.dg/cpp0x/pr58674.C: New.
+
2014-01-28 Kirill Yukhin <kirill.yukhin@intel.com>
PR target/59617
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr58674.C b/gcc/testsuite/g++.dg/cpp0x/pr58674.C
new file mode 100644
index 0000000..fe97c6d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr58674.C
@@ -0,0 +1,18 @@
+// PR c++/58674
+// { dg-do compile { target c++11 } }
+
+template<int> struct A {};
+
+template<int N> using B = A<N>;
+
+template<typename T> struct C
+{
+ B<T::i> b; // { dg-error "not usable" }
+};
+
+struct X
+{
+ static const int i;
+};
+
+C<X> c;