diff options
author | Manuel López-Ibáñez <manu@gcc.gnu.org> | 2008-08-27 23:54:36 +0000 |
---|---|---|
committer | Manuel López-Ibáñez <manu@gcc.gnu.org> | 2008-08-27 23:54:36 +0000 |
commit | e9527cfd9665e3cb0887682ccb0d17d040732799 (patch) | |
tree | a771c38af9403eafeab5a23860be3f703a4512d1 /gcc | |
parent | 4ccd12e5aae640a352129fd387657da8e4d0f95b (diff) | |
download | gcc-e9527cfd9665e3cb0887682ccb0d17d040732799.zip gcc-e9527cfd9665e3cb0887682ccb0d17d040732799.tar.gz gcc-e9527cfd9665e3cb0887682ccb0d17d040732799.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-decl.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/c90-fordecl-1.c | 3 |
4 files changed, 21 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d091380..63b1981d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 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 * c-typeck.c (WARN_FOR_ASSIGNMENT): Add OPT parameter. (convert_for_assignment): Pass corrent OPT_W* parameter to diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 056cb38..ee04d9a 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -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: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9fad734..d5d73d7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 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 * gcc.dg/pr37186.c: New. diff --git a/gcc/testsuite/gcc.dg/c90-fordecl-1.c b/gcc/testsuite/gcc.dg/c90-fordecl-1.c index 8e48dd6..4aa3c58 100644 --- a/gcc/testsuite/gcc.dg/c90-fordecl-1.c +++ b/gcc/testsuite/gcc.dg/c90-fordecl-1.c @@ -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 }} */ } |