diff options
author | Andreas Jaeger <aj@suse.de> | 2003-09-15 11:31:17 +0200 |
---|---|---|
committer | Andreas Jaeger <aj@gcc.gnu.org> | 2003-09-15 11:31:17 +0200 |
commit | c034f12167b8e88ea94f496f7f786064b9074814 (patch) | |
tree | e8af0c2a48f55bb04305f893645f855b6871b356 | |
parent | 863d938c6a762da34248523b4424d9052e28555d (diff) | |
download | gcc-c034f12167b8e88ea94f496f7f786064b9074814.zip gcc-c034f12167b8e88ea94f496f7f786064b9074814.tar.gz gcc-c034f12167b8e88ea94f496f7f786064b9074814.tar.bz2 |
invoke.texi (Warning Options): Describe -Wold-style-definition.
2003-09-15 Andreas Jaeger <aj@suse.de>
Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* doc/invoke.texi (Warning Options): Describe -Wold-style-definition.
* c-opts.c (c_common_handle_option): Handle OPT_Wold_style_definition.
* c-parse.in: Warn about old-style parameter definition.
* c-common.c: Define warn_old_style_defintion.
* c-common.h: Declare it.
* c.opt: Add Wold-style-defintion.
testsuite:
2003-09-15 Andreas Jaeger <aj@suse.de>
* gcc.dg/Wold-style-definition-1.c: New test.
From-SVN: r71400
-rw-r--r-- | gcc/c-common.c | 4 | ||||
-rw-r--r-- | gcc/c-common.h | 4 | ||||
-rw-r--r-- | gcc/c-opts.c | 4 | ||||
-rw-r--r-- | gcc/c-parse.in | 7 | ||||
-rw-r--r-- | gcc/c.opt | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Wold-style-definition-1.c | 24 |
8 files changed, 57 insertions, 1 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index 4e63749..5268806 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -429,6 +429,10 @@ int warn_implicit_int; int warn_nonnull; +/* Warn about old-style parameter declaration. */ + +int warn_old_style_definition; + /* ObjC language option variables. */ diff --git a/gcc/c-common.h b/gcc/c-common.h index 6ce5661..d9cbb2c 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -591,6 +591,10 @@ extern int warn_implicit_int; extern int warn_nonnull; +/* Warn about old-style parameter declaration. */ + +extern int warn_old_style_definition; + /* ObjC language option variables. */ diff --git a/gcc/c-opts.c b/gcc/c-opts.c index da342a8..ee957f7 100644 --- a/gcc/c-opts.c +++ b/gcc/c-opts.c @@ -550,6 +550,10 @@ c_common_handle_option (size_t scode, const char *arg, int value) warn_nonnull = value; break; + case OPT_Wold_style_definition: + warn_old_style_definition = value; + break; + case OPT_Wold_style_cast: warn_old_style_cast = value; break; diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 1338455..bb9cc1a 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -757,9 +757,16 @@ old_style_parm_decls_1: if (warn_traditional && !in_system_header && parsing_iso_function_signature) warning ("traditional C rejects ISO C style function definitions"); + if (warn_old_style_definition && !in_system_header + && !parsing_iso_function_signature) + warning ("old-style parameter declaration"); parsing_iso_function_signature = false; /* Reset after warning. */ } | datadecls + { + if (warn_old_style_definition && !in_system_header) + warning ("old-style parameter declaration"); + } ; /* The following are analogous to lineno_decl, decls and decl @@ -312,6 +312,10 @@ Wold-style-cast C++ ObjC++ Warn if a C-style cast is used in a program +Wold-style-definition +C ObjC +Warn if an old-style parameter definition is used + Woverloaded-virtual C++ ObjC++ Warn about overloaded virtual function names diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 7637e15..059135f 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -220,7 +220,7 @@ in the following sections. -Wmain -Wmissing-braces @gol -Wmissing-format-attribute -Wmissing-noreturn @gol -Wno-multichar -Wno-format-extra-args -Wno-format-y2k @gol --Wno-import -Wnonnull -Wpacked -Wpadded @gol +-Wno-import -Wnonnull -Wold-style-definition -Wpacked -Wpadded @gol -Wparentheses -Wpointer-arith -Wredundant-decls @gol -Wreturn-type -Wsequence-point -Wshadow @gol -Wsign-compare -Wstrict-aliasing @gol @@ -2709,6 +2709,11 @@ argument types. (An old-style function definition is permitted without a warning if preceded by a declaration which specifies the argument types.) +@item -Wold-style-definition @r{(C only)} +@opindex Wold-style-definition +Warn if an old-style function definition is used. A warning is given +even if there is a previous prototype. + @item -Wmissing-prototypes @r{(C only)} @opindex Wmissing-prototypes Warn if a global function is defined without a previous prototype diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d3dc2c0..c9c3b28 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-09-15 Andreas Jaeger <aj@suse.de> + + * gcc.dg/Wold-style-definition-1.c: New test. + 2003-09-14 Mark Mitchell <mark@codesourcery.com> PR c++/3907 diff --git a/gcc/testsuite/gcc.dg/Wold-style-definition-1.c b/gcc/testsuite/gcc.dg/Wold-style-definition-1.c new file mode 100644 index 0000000..d4fb8bd --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wold-style-definition-1.c @@ -0,0 +1,24 @@ +/* Test for warning about old-style function definition. */ + +/* Origin: Andreas Jaeger <aj@suse.de> */ +/* { dg-do compile } */ +/* { dg-options "-Wold-style-definition" } */ + +void +bar (a) int a; { } /* { dg-warning "old-style parameter declaration" } */ + +void bar1 () {} /* { dg-warning "old-style parameter declaration" } */ + +extern void bar2 (void); + +void bar2 () {} /* { dg-warning "old-style parameter declaration" } */ + +extern void bar3 (int); + +void bar3 (a) {} /* { dg-warning "old-style parameter declaration" } */ + +void bar4 (a) {} /* { dg-warning "old-style parameter declaration" } */ + +void bar5 (int a) {} + +void bar6 (void) {} |