cpplib.h (struct cpp_options): New member, warn_endif_labels.

2002-03-22  Phil Edwards  <pme@gcc.gnu.org>

	* cpplib.h (struct cpp_options):  New member, warn_endif_labels.
	* cppinit.c (cpp_create_reader):  On by default.
	(cpp_handle_option):  Handle -W[no-]endif-labels.
	(cpp_post_options):  Also enable if -pedantic.
	* cpplib.c (do_else):  Use it.
	(do_endif):  Likewise.
	* doc/cppopts.texi:  Document new option.
	* doc/invoke.texi:  Document new option.

From-SVN: r51190
This commit is contained in:
Phil Edwards 2002-03-22 21:59:04 +00:00
parent 4299b4e14e
commit 909de5da19
6 changed files with 47 additions and 3 deletions

View File

@ -1,3 +1,14 @@
2002-03-22 Phil Edwards <pme@gcc.gnu.org>
* cpplib.h (struct cpp_options): New member, warn_endif_labels.
* cppinit.c (cpp_create_reader): On by default.
(cpp_handle_option): Handle -W[no-]endif-labels.
(cpp_post_options): Also enable if -pedantic.
* cpplib.c (do_else): Use it.
(do_endif): Likewise.
* doc/cppopts.texi: Document new option.
* doc/invoke.texi: Document new option.
2002-03-22 Lars Brinkhoff <lars@nocrew.org>
* config/i386/i386.c, config/i386/i386.md: Change all occurences

View File

@ -491,6 +491,7 @@ cpp_create_reader (lang)
CPP_OPTION (pfile, show_column) = 1;
CPP_OPTION (pfile, tabstop) = 8;
CPP_OPTION (pfile, operator_names) = 1;
CPP_OPTION (pfile, warn_endif_labels) = 1;
#if DEFAULT_SIGNED_CHAR
CPP_OPTION (pfile, signed_char) = 1;
#else
@ -1735,6 +1736,8 @@ cpp_handle_option (pfile, argc, argv, ignore)
CPP_OPTION (pfile, warnings_are_errors) = 1;
else if (!strcmp (argv[i], "-Wsystem-headers"))
CPP_OPTION (pfile, warn_system_headers) = 1;
else if (!strcmp (argv[i], "-Wendif-labels"))
CPP_OPTION (pfile, warn_endif_labels) = 1;
else if (!strcmp (argv[i], "-Wno-traditional"))
CPP_OPTION (pfile, warn_traditional) = 0;
else if (!strcmp (argv[i], "-Wno-trigraphs"))
@ -1751,6 +1754,8 @@ cpp_handle_option (pfile, argc, argv, ignore)
CPP_OPTION (pfile, warnings_are_errors) = 0;
else if (!strcmp (argv[i], "-Wno-system-headers"))
CPP_OPTION (pfile, warn_system_headers) = 0;
else if (!strcmp (argv[i], "-Wno-endif-labels"))
CPP_OPTION (pfile, warn_endif_labels) = 0;
else if (! ignore)
return i;
break;
@ -1832,6 +1837,10 @@ cpp_post_options (pfile)
|| CPP_OPTION (pfile, deps_file)
|| CPP_OPTION (pfile, deps_phony_targets)))
cpp_fatal (pfile, "you must additionally specify either -M or -MM");
/* Some things should always be on in pedantic mode. */
if (CPP_OPTION (pfile, pedantic) == 1)
CPP_OPTION (pfile, warn_endif_labels) = 1;
}
/* Set up dependency-file output. On exit, if print_deps is non-zero

View File

@ -1375,7 +1375,7 @@ do_else (pfile)
ifs->mi_cmacro = 0;
/* Only check EOL if was not originally skipping. */
if (!ifs->was_skipping)
if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
check_eol (pfile);
}
}
@ -1430,7 +1430,7 @@ do_endif (pfile)
else
{
/* Only check EOL if was not originally skipping. */
if (!ifs->was_skipping)
if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
check_eol (pfile);
/* If potential control macro, we go back outside again. */

View File

@ -308,6 +308,9 @@ struct cpp_options
traditional C. */
unsigned char warn_traditional;
/* Nonzero means warn about text after an #endif (or #else). */
unsigned char warn_endif_labels;
/* Nonzero means turn warnings into errors. */
unsigned char warnings_are_errors;

View File

@ -110,6 +110,23 @@ Warn whenever an identifier which is not a macro is encountered in an
@samp{#if} directive, outside of @samp{defined}. Such identifiers are
replaced with zero.
@item -Wendif-labels
@opindex Wendif-labels
Warn whenever an @samp{#else} or an @samp{#endif} are followed by text.
This usually happens in code of the form
@smallexample
#if FOO
@dots{}
#else FOO
@dots{}
#endif FOO
@end smallexample
@noindent
The second and third @code{FOO} should be in comments, but often are not
in older programs. This warning is on by default.
@item -Werror
@opindex Werror
Make all warnings into hard errors. Source code which triggers warnings

View File

@ -220,7 +220,7 @@ in the following sections.
-Wimplicit -Wimplicit-int @gol
-Wimplicit-function-declaration @gol
-Werror-implicit-function-declaration @gol
-Wimport -Winline @gol
-Wimport -Winline -Wno-endif-labels @gol
-Wlarger-than-@var{len} -Wlong-long @gol
-Wmain -Wmissing-braces -Wmissing-declarations @gol
-Wmissing-format-attribute -Wmissing-noreturn @gol
@ -2384,6 +2384,10 @@ conversion warnings, for the full set use @option{-Wconversion}.
@opindex Wundef
Warn if an undefined identifier is evaluated in an @samp{#if} directive.
@item -Wendif-labels
@opindex Wendif-labels
Warn whenever an @samp{#else} or an @samp{#endif} are followed by text.
@item -Wshadow
@opindex Wshadow
Warn whenever a local variable shadows another local variable, parameter or