From f560bf91ae0ba419d7445eb19c09a4d1ad341e75 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 14 Jan 2004 23:03:58 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/c-parse.in | 6 +++--- gcc/testsuite/ChangeLog | 9 +++++++++ gcc/testsuite/gcc.c-torture/compile/20000211-3.c | 2 +- gcc/testsuite/gcc.c-torture/compile/20000518-1.c | 2 +- gcc/testsuite/gcc.c-torture/compile/20021108-1.c | 2 +- gcc/testsuite/gcc.c-torture/compile/950922-1.c | 4 ++-- gcc/testsuite/gcc.dg/label-compound-stmt-1.c | 7 +++++++ 8 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/label-compound-stmt-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29bcb0631d39..e5d53961ba25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-01-14 Joseph S. Myers + + * c-parse.in (stmts_and_decls): Make label at end of compound + statement a hard error. + 2004-01-14 Jan Hubicka * cgraph.c (create_edge): Use local.redefined_extern_inline. diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 954c37067ffa..4cdbfed8b0c6 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 05a6b6027c21..2ac3cc83f98d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2004-01-14 Joseph S. Myers + + * 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 * 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 7e43c8ad4670..7a02b685c4ab 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 fda44b657cce..d2087796a847 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 c421639035a8..01b6e4ed7aa8 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 73574f33e68e..73c52f7740a1 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 000000000000..71411631ba24 --- /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 */ +/* { 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 } */ -- 2.47.3