diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-parse.in | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20000211-3.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20000518-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20021108-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/950922-1.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/label-compound-stmt-1.c | 7 |
8 files changed, 29 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29bcb0631d3..e5d53961ba2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 954c37067ff..4cdbfed8b0c 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -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 ; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 05a6b6027c2..2ac3cc83f98 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. diff --git a/gcc/testsuite/gcc.c-torture/compile/20000211-3.c b/gcc/testsuite/gcc.c-torture/compile/20000211-3.c index 7e43c8ad467..7a02b685c4a 100644 --- a/gcc/testsuite/gcc.c-torture/compile/20000211-3.c +++ b/gcc/testsuite/gcc.c-torture/compile/20000211-3.c @@ -3,7 +3,7 @@ void f_clos(int x) { switch(x) { default: - mumble: + mumble:; } } diff --git a/gcc/testsuite/gcc.c-torture/compile/20000518-1.c b/gcc/testsuite/gcc.c-torture/compile/20000518-1.c index fda44b657cc..d2087796a84 100644 --- a/gcc/testsuite/gcc.c-torture/compile/20000518-1.c +++ b/gcc/testsuite/gcc.c-torture/compile/20000518-1.c @@ -6,7 +6,7 @@ extern __inline__ void test() callit1(&&l1); -l1: +l1:; } diff --git a/gcc/testsuite/gcc.c-torture/compile/20021108-1.c b/gcc/testsuite/gcc.c-torture/compile/20021108-1.c index c421639035a..01b6e4ed7aa 100644 --- a/gcc/testsuite/gcc.c-torture/compile/20021108-1.c +++ b/gcc/testsuite/gcc.c-torture/compile/20021108-1.c @@ -3,5 +3,5 @@ main() { l1: return &&l1-&&l2; -l2: +l2:; } diff --git a/gcc/testsuite/gcc.c-torture/compile/950922-1.c b/gcc/testsuite/gcc.c-torture/compile/950922-1.c index 73574f33e68..73c52f7740a 100644 --- a/gcc/testsuite/gcc.c-torture/compile/950922-1.c +++ b/gcc/testsuite/gcc.c-torture/compile/950922-1.c @@ -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:; } diff --git a/gcc/testsuite/gcc.dg/label-compound-stmt-1.c b/gcc/testsuite/gcc.dg/label-compound-stmt-1.c new file mode 100644 index 00000000000..71411631ba2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/label-compound-stmt-1.c @@ -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 } */ |