On 09/08/16 16:59, Paolo Bonzini wrote:
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c       (revision 239276)
+++ gcc/c-family/c-opts.c       (working copy)
@@ -1256,6 +1256,10 @@ sanitize_cpp_opts (void)
   cpp_opts->unsigned_char = !flag_signed_char;
   cpp_opts->stdc_0_in_system_headers = STDC_0_IN_SYSTEM_HEADERS;

+  cpp_opts->warn_expansion_to_defined = cpp_warn_expansion_to_defined;
+  if (cpp_warn_expansion_to_defined == -1)
+    cpp_warn_expansion_to_defined = pedantic || extra_warnings;
+

Instead of the above, plase use LangEnabledBy() or EnabledBy() in c.opt. See Wendif-labels and other examples. Then, you do not need Init(-1).

   /* Wlong-long is disabled by default. It is enabled by:
       [-Wpedantic | -Wtraditional] -std=[gnu|c]++98 ; or
       [-Wpedantic | -Wtraditional] -std=non-c99
Index: gcc/c-family/c.opt
===================================================================
--- gcc/c-family/c.opt  (revision 239276)
+++ gcc/c-family/c.opt  (working copy)
@@ -506,6 +506,10 @@ Wdouble-promotion
 C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
 Warn about implicit conversions from \"float\" to \"double\".

+Wexpansion-to-defined
+C ObjC C++ ObjC++ CppReason(CPP_W_EXPANSION_TO_DEFINED) 
Var(cpp_warn_expansion_to_defined) Init(-1) Warning
+Warn if an undefined macro is used in an #if directive.
+

You are also missing CPP(warn_expansion_to_defined) so that the cpp and gcc sides are in sync even when using pragmas.

Cheers,

        Manuel.

Reply via email to