aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2015-07-21 20:51:28 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2015-07-21 20:51:28 +0000
commitfaa16e44059217584127bb0d825b27b1d263a894 (patch)
tree389591321ddfd6e525f2f04a2a400c3d43f1124e
parent6998b929fa954dc791b77011ce7d3252d6f107fe (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/decl.c7
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/template/crash81.C3
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" }
};