aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2014-02-20 17:02:24 +0100
committerKai Tietz <ktietz@gcc.gnu.org>2014-02-20 17:02:24 +0100
commitf1dbbe422e62d40b987b7e241cd571ba19dd3872 (patch)
tree2bd6247ad814d3d424edd864d683635fb0ab4ee1
parent7f5e81887717c4fe8b89c81720b94b5e93174c38 (diff)
downloadgcc-f1dbbe422e62d40b987b7e241cd571ba19dd3872.zip
gcc-f1dbbe422e62d40b987b7e241cd571ba19dd3872.tar.gz
gcc-f1dbbe422e62d40b987b7e241cd571ba19dd3872.tar.bz2
re PR c++/58873 ([c++11] ICE with __underlying_type for broken enum)
PR c++/58873 * parser.c (cp_parser_functional_cast): Treat NULL_TREE valued type argument as error_mark_node. From-SVN: r207961
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/parser.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7231155..602ab94 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2014-02-20 Kai Tietz <ktietz@redhat.com>
+ PR c++/58873
+ * parser.c (cp_parser_functional_cast): Treat NULL_TREE
+ valued type argument as error_mark_node.
+
PR c++/58835
* semantics.c (finish_fname): Handle error_mark_node.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 9818213..4673f78 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -23165,6 +23165,9 @@ cp_parser_functional_cast (cp_parser* parser, tree type)
tree cast;
bool nonconst_p;
+ if (!type)
+ type = error_mark_node;
+
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_BRACE))
{
maybe_warn_cpp0x (CPP0X_INITIALIZER_LISTS);