Commit 2c14ae9a by Volker Reichelt Committed by Volker Reichelt

re PR c/28649 (Poor error recovery of C parser)

	PR c/28649
	* c-parser.c (c_parser_compound_statement_nostart): Reset
	parser->error after each statement.

	* gcc.dg/parse-error-1.c: New test.
	* gcc.dg/parse-error-2.c: New test.
	* gcc.dg/cpp/digraph2.c: Add error-marker.
	* gcc.dg/noncompile/920923-1.c: Likewise.

From-SVN: r116157
parent 482e4739
2006-08-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c/28649
* c-parser.c (c_parser_compound_statement_nostart): Reset
parser->error after each statement.
2006-08-15 Jakub Jelinek <jakub@redhat.com> 2006-08-15 Jakub Jelinek <jakub@redhat.com>
PR middle-end/28713 PR middle-end/28713
......
...@@ -3486,6 +3486,8 @@ c_parser_compound_statement_nostart (c_parser *parser) ...@@ -3486,6 +3486,8 @@ c_parser_compound_statement_nostart (c_parser *parser)
last_stmt = true; last_stmt = true;
c_parser_statement_after_labels (parser); c_parser_statement_after_labels (parser);
} }
parser->error = false;
} }
if (last_label) if (last_label)
error ("label at end of compound statement"); error ("label at end of compound statement");
......
2006-08-15 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c/28649
* gcc.dg/parse-error-1.c: New test.
* gcc.dg/parse-error-2.c: New test.
* gcc.dg/cpp/digraph2.c: Add error-marker.
* gcc.dg/noncompile/920923-1.c: Likewise.
2006-08-14 Andrew Pinski <pinskia@physics.uc.edu> 2006-08-14 Andrew Pinski <pinskia@physics.uc.edu>
PR c/27490 PR c/27490
...@@ -13,7 +13,7 @@ int main (int argc, char *argv[]) ...@@ -13,7 +13,7 @@ int main (int argc, char *argv[])
/* Place this after main () so we get to test both the compiler above /* Place this after main () so we get to test both the compiler above
and the preprocessor below. */ and the preprocessor below. */
%:define glue %:define glue /* { dg-error "expected declaration" } */
#ifdef glue #ifdef glue
#error glue is defined! #error glue is defined!
#endif #endif
...@@ -56,7 +56,7 @@ caddr_t v_addr; /* { dg-error "expected" } */ ...@@ -56,7 +56,7 @@ caddr_t v_addr; /* { dg-error "expected" } */
{ {
register prec_t bucket; register prec_t bucket;
register caddr_t p_addr; /* { dg-error "expected|undeclared" } */ register caddr_t p_addr; /* { dg-error "expected|undeclared" } */
bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); bucket = mem_hash+((((v_addr)>>ITEMBITS))&hash_mask); /* { dg-error "undeclared" } */
do { do {
if (bucket->v_addr == ((v_addr)>>ITEMBITS) { /* { dg-error "expected|undeclared|no member" } */ if (bucket->v_addr == ((v_addr)>>ITEMBITS) { /* { dg-error "expected|undeclared|no member" } */
if(!(bucket->perm_set&va_op)) if(!(bucket->perm_set&va_op))
......
/* PR c/28649 */
/* { dg-do compile } */
void foo()
{
+; /* { dg-error "expected expression" } */
+; /* { dg-error "expected expression" } */
}
int +; /* { dg-error "expected identifier" } */
/* PR c/28649 */
/* { dg-do compile } */
void foo()
{
+; /* { dg-error "expected expression" } */
}
int i;
void bar()
{
i++; /* { dg-bogus "undeclared" } */
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment