c-parse.in (stmts_and_decls): Make label at end of compound statement a hard error.

* c-parse.in (stmts_and_decls): Make label at end of compound
	statement a hard error.

testsuite:
	* gcc.dg/label-compound-stmt-1.c: New test.
	* gcc.c-torture/compile/950922-1.c,
	gcc.c-torture/compile/20000211-3.c,
	gcc.c-torture/compile/20000518-1.c,
	gcc.c-torture/compile/20021108-1.c: Avoid labels at and of
	compound statements.

From-SVN: r75891
This commit is contained in:
Joseph Myers 2004-01-14 23:03:58 +00:00 committed by Joseph Myers
parent 95c755e90f
commit f560bf91ae
8 changed files with 29 additions and 8 deletions

View file

@ -1,3 +1,8 @@
2004-01-14 Joseph S. Myers <jsm@polyomino.org.uk>
* c-parse.in (stmts_and_decls): Make label at end of compound
statement a hard error.
2004-01-14 Jan Hubicka <jh@suse.cz>
* cgraph.c (create_edge): Use local.redefined_extern_inline.

View file

@ -1,6 +1,6 @@
/* YACC parser for C syntax and for Objective C. -*-c-*-
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GCC.
@ -2001,7 +2001,7 @@ stmts_and_decls:
| lineno_stmt_decl_or_labels_ending_decl
| lineno_stmt_decl_or_labels_ending_label
{
pedwarn ("deprecated use of label at end of compound statement");
error ("label at end of compound statement");
}
| lineno_stmt_decl_or_labels_ending_error
;

View file

@ -1,3 +1,12 @@
2004-01-14 Joseph S. Myers <jsm@polyomino.org.uk>
* gcc.dg/label-compound-stmt-1.c: New test.
* gcc.c-torture/compile/950922-1.c,
gcc.c-torture/compile/20000211-3.c,
gcc.c-torture/compile/20000518-1.c,
gcc.c-torture/compile/20021108-1.c: Avoid labels at and of
compound statements.
2004-01-14 Hartmut Penner <hpenner@de.ibm.com>
* gcc.dg/ppc64-abi-1.c: New test.

View file

@ -3,7 +3,7 @@ void f_clos(int x)
{
switch(x) {
default:
mumble:
mumble:;
}
}

View file

@ -6,7 +6,7 @@ extern __inline__ void test()
callit1(&&l1);
l1:
l1:;
}

View file

@ -3,5 +3,5 @@ main()
{
l1:
return &&l1-&&l2;
l2:
l2:;
}

View file

@ -40,7 +40,7 @@ f (int ch, char *fp, char *ap)
nosign:
if (_uquad != 0 || prec != 0);
break;
default:
default:;
}
if ((f & 0x100) == 0) {
} else {
@ -64,5 +64,5 @@ f (int ch, char *fp, char *ap)
}
}
error:
error:;
}

View file

@ -0,0 +1,7 @@
/* Test that labels at ends of compound statements are hard errors. */
/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
/* { dg-do compile } */
/* { dg-options "" } */
void f(void) { g: } /* { dg-bogus "warning" "warning in place of error" } */
/* { dg-error "label|parse|syntax" "label at end of compound statement" { target *-*-* } 6 } */