aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Reichelt <reichelt@igpm.rwth-aachen.de>2005-10-17 22:22:30 +0000
committerVolker Reichelt <reichelt@gcc.gnu.org>2005-10-17 22:22:30 +0000
commit0ef8776d01a50a33031e4bbc3ee03349bf7de862 (patch)
tree17b5d7c8ffa253c8d27c1450f2e0aca70beccc92
parent4213f93b6aea64f4ea5f8a539a3f0ad912bec1d2 (diff)
downloadgcc-0ef8776d01a50a33031e4bbc3ee03349bf7de862.zip
gcc-0ef8776d01a50a33031e4bbc3ee03349bf7de862.tar.gz
gcc-0ef8776d01a50a33031e4bbc3ee03349bf7de862.tar.bz2
re PR c++/23440 ("void f(){for" crashes the C++ frontend)
PR c++/23440 * parser.c (cp_parser_statement): If the parser reached CPP_EOF, only complain about missing statement. * g++.dg/parse/for1.C: New test. From-SVN: r105520
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/parse/for1.C7
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 08344ee..6223540 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/23440
+ * parser.c (cp_parser_statement): If the parser reached CPP_EOF,
+ only complain about missing statement.
+
2005-10-17 Nathan Sidwell <nathan@codesourcery.com>
PR c++/24386
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 45fc69f..300c266 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -6087,6 +6087,11 @@ cp_parser_statement (cp_parser* parser, tree in_statement_expr)
cp_lexer_handle_pragma (parser->lexer);
return;
}
+ else if (token->type == CPP_EOF)
+ {
+ cp_parser_error (parser, "expected statement");
+ return;
+ }
/* Everything else must be a declaration-statement or an
expression-statement. Try for the declaration-statement
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5e1d0af..0815420 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-17 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/23440
+ * g++.dg/parse/for1.C: New test.
+
2005-10-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/23446
diff --git a/gcc/testsuite/g++.dg/parse/for1.C b/gcc/testsuite/g++.dg/parse/for1.C
new file mode 100644
index 0000000..1e310ee
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/for1.C
@@ -0,0 +1,7 @@
+// PR c++/23440
+// Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+// { dg-do compile }
+// { dg-options "" }
+
+# 0 "for1.C"
+void foo() { for (;;) // { dg-error "at end of input" "" { target *-*-* } 0 }