Commit f560bf91 by Joseph Myers Committed by Joseph Myers

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
parent 95c755e9
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.
......
/* 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
;
......
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.
......
......@@ -3,7 +3,7 @@ void f_clos(int x)
{
switch(x) {
default:
mumble:
mumble:;
}
}
......
......@@ -6,7 +6,7 @@ extern __inline__ void test()
callit1(&&l1);
l1:
l1:;
}
......
......@@ -3,5 +3,5 @@ main()
{
l1:
return &&l1-&&l2;
l2:
l2:;
}
......@@ -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:;
}
/* 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 } */
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