invoke.texi (Wnormalized=): Update.

gcc/ChangeLog:

2014-09-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* doc/invoke.texi (Wnormalized=): Update.

libcpp/ChangeLog:

2014-09-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* include/cpplib.h (struct cpp_options): Declare warn_normalize as
	int instead of enum.

gcc/c-family/ChangeLog:

2014-09-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* c.opt	(Wnormalized): New.
	(Wnormalized=): Use Enum and Reject Negative.
	* c-opts.c (c_common_handle_option): Do not handle Wnormalized here.

gcc/testsuite/ChangeLog:

2014-09-09  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	* gcc.dg/cpp/warn-normalized-3.c: Delete useless dg-prune-output.

From-SVN: r215093
parent 00c7a3c7
2014-09-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
* doc/invoke.texi (Wnormalized=): Update.
2014-09-09 Segher Boessenkool <segher@kernel.crashing.org> 2014-09-09 Segher Boessenkool <segher@kernel.crashing.org>
PR target/63195 PR target/63195
2014-09-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
* c.opt (Wnormalized): New.
(Wnormalized=): Use Enum and Reject Negative.
* c-opts.c (c_common_handle_option): Do not handle Wnormalized here.
2014-09-08 Joseph Myers <joseph@codesourcery.com> 2014-09-08 Joseph Myers <joseph@codesourcery.com>
* c-cppbuiltin.c (c_cpp_builtins): Define macros for mantissa * c-cppbuiltin.c (c_cpp_builtins): Define macros for mantissa
......
...@@ -384,29 +384,6 @@ c_common_handle_option (size_t scode, const char *arg, int value, ...@@ -384,29 +384,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
cpp_opts->warn_num_sign_change = value; cpp_opts->warn_num_sign_change = value;
break; break;
case OPT_Wnormalized_:
/* FIXME: Move all this to c.opt. */
if (kind == DK_ERROR)
{
gcc_assert (!arg);
inform (input_location, "-Werror=normalized=: set -Wnormalized=nfc");
cpp_opts->warn_normalize = normalized_C;
}
else
{
if (!value || (arg && strcasecmp (arg, "none") == 0))
cpp_opts->warn_normalize = normalized_none;
else if (!arg || strcasecmp (arg, "nfkc") == 0)
cpp_opts->warn_normalize = normalized_KC;
else if (strcasecmp (arg, "id") == 0)
cpp_opts->warn_normalize = normalized_identifier_C;
else if (strcasecmp (arg, "nfc") == 0)
cpp_opts->warn_normalize = normalized_C;
else
error ("argument %qs to %<-Wnormalized%> not recognized", arg);
break;
}
case OPT_Wunknown_pragmas: case OPT_Wunknown_pragmas:
/* Set to greater than 1, so that even unknown pragmas in /* Set to greater than 1, so that even unknown pragmas in
system headers will be warned about. */ system headers will be warned about. */
......
...@@ -633,9 +633,32 @@ Wnonnull ...@@ -633,9 +633,32 @@ Wnonnull
C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall) C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
; ;
Wnormalized
C ObjC C++ ObjC++ Alias(Wnormalized=,nfc,none)
;
Wnormalized= Wnormalized=
C ObjC C++ ObjC++ Joined Warning C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(warn_normalize) Init(normalized_C) Var(cpp_warn_normalize) Enum(cpp_normalize_level)
-Wnormalized=<id|nfc|nfkc> Warn about non-normalised Unicode strings -Wnormalized=<none|id|nfc|nfkc> Warn about non-normalised Unicode strings
; Required for these enum values.
SourceInclude
cpplib.h
Enum
Name(cpp_normalize_level) Type(int) UnknownError(argument %qs to %<-Wnormalized%> not recognized)
EnumValue
Enum(cpp_normalize_level) String(none) Value(normalized_none)
EnumValue
Enum(cpp_normalize_level) String(nfkc) Value(normalized_KC)
EnumValue
Enum(cpp_normalize_level) String(id) Value(normalized_identifier_C)
EnumValue
Enum(cpp_normalize_level) String(nfc) Value(normalized_C)
Wold-style-cast Wold-style-cast
C++ ObjC++ Var(warn_old_style_cast) Warning C++ ObjC++ Var(warn_old_style_cast) Warning
......
...@@ -262,7 +262,8 @@ Objective-C and Objective-C++ Dialects}. ...@@ -262,7 +262,8 @@ Objective-C and Objective-C++ Dialects}.
-Wlogical-op -Wlogical-not-parentheses -Wlong-long @gol -Wlogical-op -Wlogical-not-parentheses -Wlong-long @gol
-Wmain -Wmaybe-uninitialized -Wmemset-transposed-args -Wmissing-braces @gol -Wmain -Wmaybe-uninitialized -Wmemset-transposed-args -Wmissing-braces @gol
-Wmissing-field-initializers -Wmissing-include-dirs @gol -Wmissing-field-initializers -Wmissing-include-dirs @gol
-Wno-multichar -Wnonnull -Wodr -Wno-overflow -Wopenmp-simd @gol -Wno-multichar -Wnonnull -Wnormalized=@r{[}none@r{|}id@r{|}nfc@r{|}nfkc@r{]} @gol
-Wodr -Wno-overflow -Wopenmp-simd @gol
-Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol -Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol
-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol -Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
-Wpointer-arith -Wno-pointer-to-int-cast @gol -Wpointer-arith -Wno-pointer-to-int-cast @gol
...@@ -4921,8 +4922,10 @@ Do not warn if a multicharacter constant (@samp{'FOOF'}) is used. ...@@ -4921,8 +4922,10 @@ Do not warn if a multicharacter constant (@samp{'FOOF'}) is used.
Usually they indicate a typo in the user's code, as they have Usually they indicate a typo in the user's code, as they have
implementation-defined values, and should not be used in portable code. implementation-defined values, and should not be used in portable code.
@item -Wnormalized=<none|id|nfc|nfkc> @item -Wnormalized@r{[}=@r{<}none@r{|}id@r{|}nfc@r{|}nfkc@r{>]}
@opindex Wnormalized= @opindex Wnormalized=
@opindex Wnormalized
@opindex Wno-normalized
@cindex NFC @cindex NFC
@cindex NFKC @cindex NFKC
@cindex character set, input normalization @cindex character set, input normalization
...@@ -4938,7 +4941,8 @@ have not been normalized; this option controls that warning. ...@@ -4938,7 +4941,8 @@ have not been normalized; this option controls that warning.
There are four levels of warning supported by GCC@. The default is There are four levels of warning supported by GCC@. The default is
@option{-Wnormalized=nfc}, which warns about any identifier that is @option{-Wnormalized=nfc}, which warns about any identifier that is
not in the ISO 10646 ``C'' normalized form, @dfn{NFC}. NFC is the not in the ISO 10646 ``C'' normalized form, @dfn{NFC}. NFC is the
recommended form for most uses. recommended form for most uses. It is equivalent to
@option{-Wnormalized}.
Unfortunately, there are some characters allowed in identifiers by Unfortunately, there are some characters allowed in identifiers by
ISO C and ISO C++ that, when turned into NFC, are not allowed in ISO C and ISO C++ that, when turned into NFC, are not allowed in
...@@ -4949,9 +4953,10 @@ It is hoped that future versions of the standards involved will correct ...@@ -4949,9 +4953,10 @@ It is hoped that future versions of the standards involved will correct
this, which is why this option is not the default. this, which is why this option is not the default.
You can switch the warning off for all characters by writing You can switch the warning off for all characters by writing
@option{-Wnormalized=none}. You should only do this if you @option{-Wnormalized=none} or @option{-Wno-normalized}. You should
are using some other normalization scheme (like ``D''), because only do this if you are using some other normalization scheme (like
otherwise you can easily create bugs that are literally impossible to see. ``D''), because otherwise you can easily create bugs that are
literally impossible to see.
Some characters in ISO 10646 have distinct meanings but look identical Some characters in ISO 10646 have distinct meanings but look identical
in some fonts or display methodologies, especially once formatting has in some fonts or display methodologies, especially once formatting has
......
2014-09-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
* gcc.dg/cpp/warn-normalized-3.c: Delete useless dg-prune-output.
2014-09-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com> 2014-09-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/swaps-p8-15.c: Remove scan-assembler-not for * gcc.target/powerpc/swaps-p8-15.c: Remove scan-assembler-not for
......
// { dg-do preprocess } // { dg-do preprocess }
// { dg-options "-std=gnu99 -fdiagnostics-show-option -fextended-identifiers -Werror=normalized=" } // { dg-options "-std=gnu99 -fdiagnostics-show-option -fextended-identifiers -Werror=normalized=" }
/* { dg-message "some warnings being treated as errors" "" {target "*-*-*"} 0 } */ /* { dg-message "some warnings being treated as errors" "" {target "*-*-*"} 0 } */
// { dg-prune-output ".*-Werror=normalized=: set -Wnormalized=nfc.*" }
\u0F43 // { dg-error "`.U00000f43' is not in NFC .-Werror=normalized=." } \u0F43 // { dg-error "`.U00000f43' is not in NFC .-Werror=normalized=." }
2014-09-09 Manuel López-Ibáñez <manu@gcc.gnu.org>
* include/cpplib.h (struct cpp_options): Declare warn_normalize as
int instead of enum.
2014-09-04 Manuel López-Ibáñez <manu@gcc.gnu.org> 2014-09-04 Manuel López-Ibáñez <manu@gcc.gnu.org>
* macro.c (replace_args): Use cpp_pedwarning, cpp_warning and * macro.c (replace_args): Use cpp_pedwarning, cpp_warning and
......
...@@ -457,8 +457,8 @@ struct cpp_options ...@@ -457,8 +457,8 @@ struct cpp_options
const char *input_charset; const char *input_charset;
/* The minimum permitted level of normalization before a warning /* The minimum permitted level of normalization before a warning
is generated. */ is generated. See enum cpp_normalize_level. */
enum cpp_normalize_level warn_normalize; int warn_normalize;
/* True to warn about precompiled header files we couldn't use. */ /* True to warn about precompiled header files we couldn't use. */
bool warn_invalid_pch; bool warn_invalid_pch;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment