diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2015-07-21 20:51:28 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2015-07-21 20:51:28 +0000 |
commit | faa16e44059217584127bb0d825b27b1d263a894 (patch) | |
tree | 389591321ddfd6e525f2f04a2a400c3d43f1124e | |
parent | 6998b929fa954dc791b77011ce7d3252d6f107fe (diff) | |
download | gcc-faa16e44059217584127bb0d825b27b1d263a894.zip gcc-faa16e44059217584127bb0d825b27b1d263a894.tar.gz gcc-faa16e44059217584127bb0d825b27b1d263a894.tar.bz2 |
decl.c (grokdeclarator): For an erroneous template parameter propagate error_mark_node as type.
/cp
2015-07-21 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): For an erroneous template parameter
propagate error_mark_node as type.
/testsuite
2015-07-21 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/template/crash81.C: Update.
From-SVN: r226054
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/crash81.C | 3 |
4 files changed, 16 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b72b22f..bb0385d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2015-07-21 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (grokdeclarator): For an erroneous template parameter + propagate error_mark_node as type. + 2015-07-20 Marek Polacek <polacek@redhat.com> PR c++/55095 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index db8b1aa..01b8120 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9315,7 +9315,12 @@ grokdeclarator (const cp_declarator *declarator, warning (OPT_Wreturn_type, "ISO C++ forbids declaration of %qs with no type", name); - type = integer_type_node; + if (type_was_error_mark_node && template_parm_flag) + /* FIXME we should be able to propagate the error_mark_node as is + for other contexts too. */ + type = error_mark_node; + else + type = integer_type_node; } ctype = NULL_TREE; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 16d1caf..749b04f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2015-07-21 Paolo Carlini <paolo.carlini@oracle.com> + + * g++.dg/template/crash81.C: Update. + 2015-07-21 Vladimir Makarov <vmakarov@redhat.com> PR ipa/66424. diff --git a/gcc/testsuite/g++.dg/template/crash81.C b/gcc/testsuite/g++.dg/template/crash81.C index 54efba6..c0ea37f 100644 --- a/gcc/testsuite/g++.dg/template/crash81.C +++ b/gcc/testsuite/g++.dg/template/crash81.C @@ -2,6 +2,5 @@ struct A { - template<T::X> struct X; // { dg-error "'T' has not been declared" "T" } - // { dg-bogus "declaration" "" { xfail *-*-* } 5 } + template<T::X> struct X; // { dg-error "'T' has not been declared" } }; |