re PR c/31673 ("`for' loop initial declaration used outside C99 mode" is confusing)

2008-08-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/31673
	* c-decl.c (check_for_loop_decls): Improve error message. Give
	hint.
testsuite/
	* gcc.dg/c90-fordecl-1.c: Update.

From-SVN: r139681
This commit is contained in:
Manuel López-Ibáñez 2008-08-27 23:54:36 +00:00
parent 4ccd12e5aa
commit e9527cfd96
4 changed files with 21 additions and 3 deletions

View file

@ -1,3 +1,9 @@
2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/31673
* c-decl.c (check_for_loop_decls): Improve error message. Give
hint.
2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/37186

View file

@ -6796,13 +6796,19 @@ check_for_loop_decls (void)
tree one_decl = NULL_TREE;
int n_decls = 0;
if (!flag_isoc99)
{
static bool hint = true;
/* If we get here, declarations have been used in a for loop without
the C99 for loop scope. This doesn't make much sense, so don't
allow it. */
error ("%<for%> loop initial declaration used outside C99 mode");
error ("%<for%> loop initial declarations are only allowed in C99 mode");
if (hint)
{
inform (input_location,
"use option -std=c99 or -std=gnu99 to compile your code");
hint = false;
}
return NULL_TREE;
}
/* C99 subclause 6.8.5 paragraph 3:

View file

@ -1,3 +1,8 @@
2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/31673
* gcc.dg/c90-fordecl-1.c: Update.
2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/37186

View file

@ -9,5 +9,6 @@ foo (void)
int j = 0;
for (int i = 1; i <= 10; i++) /* { dg-bogus "warning" "warning in place of error" } */
j += i;
/* { dg-error "parse|decl" "declaration in for loop" { target *-*-* } 10 } */
/* { dg-error "'for' loop initial declarations are only allowed in C99 mode" "declaration in for loop" { target *-*-* } 10 } */
/* { dg-message "note: use option -std=c99 or -std=gnu99 to compile your code" "note" { target *-*-* } 10 }} */
}