+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>
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>
* c-cppbuiltin.c (c_cpp_builtins): Define macros for mantissa
cpp_opts->warn_num_sign_change = value;
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:
/* Set to greater than 1, so that even unknown pragmas in
system headers will be warned about. */
C ObjC C++ ObjC++ LangEnabledBy(C ObjC C++ ObjC++,Wall)
;
+Wnormalized
+C ObjC C++ ObjC++ Alias(Wnormalized=,nfc,none)
+;
+
Wnormalized=
-C ObjC C++ ObjC++ Joined Warning
--Wnormalized=<id|nfc|nfkc> Warn about non-normalised Unicode strings
+C ObjC C++ ObjC++ RejectNegative Joined Warning CPP(warn_normalize) Init(normalized_C) Var(cpp_warn_normalize) Enum(cpp_normalize_level)
+-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
C++ ObjC++ Var(warn_old_style_cast) Warning
-Wlogical-op -Wlogical-not-parentheses -Wlong-long @gol
-Wmain -Wmaybe-uninitialized -Wmemset-transposed-args -Wmissing-braces @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
-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
-Wpointer-arith -Wno-pointer-to-int-cast @gol
Usually they indicate a typo in the user's code, as they have
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 Wno-normalized
@cindex NFC
@cindex NFKC
@cindex character set, input normalization
There are four levels of warning supported by GCC@. The default is
@option{-Wnormalized=nfc}, which warns about any identifier that is
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
ISO C and ISO C++ that, when turned into NFC, are not allowed in
this, which is why this option is not the default.
You can switch the warning off for all characters by writing
-@option{-Wnormalized=none}. You should only do this if you
-are using some other normalization scheme (like ``D''), because
-otherwise you can easily create bugs that are literally impossible to see.
+@option{-Wnormalized=none} or @option{-Wno-normalized}. You should
+only do this if you are using some other normalization scheme (like
+``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
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>
* gcc.target/powerpc/swaps-p8-15.c: Remove scan-assembler-not for
// { dg-do preprocess }
// { dg-options "-std=gnu99 -fdiagnostics-show-option -fextended-identifiers -Werror=normalized=" }
/* { 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=." }
+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>
* macro.c (replace_args): Use cpp_pedwarning, cpp_warning and
const char *input_charset;
/* The minimum permitted level of normalization before a warning
- is generated. */
- enum cpp_normalize_level warn_normalize;
+ is generated. See enum cpp_normalize_level. */
+ int warn_normalize;
/* True to warn about precompiled header files we couldn't use. */
bool warn_invalid_pch;