This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: -Wvariadic-macros does not print warning
- From: Prathamesh Kulkarni <bilbotheelffriend at gmail dot com>
- To: manu at gcc dot gnu dot org, "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 23 Apr 2014 23:33:28 +0530
- Subject: Re: -Wvariadic-macros does not print warning
- Authentication-results: sourceware.org; auth=none
- References: <CAJXstsDGN7XDYBjFvgCsV-nAceMZNMB+2snrEcfH0jcNNLev5g at mail dot gmail dot com> <CAJXstsC+9RJnM61Q9-3kiUT2C6aRvYuZeHgG7BMJvVVdg2F3+g at mail dot gmail dot com>
I didn't attach the patch, I am extremely sorry for the noise.
I am re-posting the mail.
This is a follow up mail to http://gcc.gnu.org/ml/gcc-help/2014-04/msg00096.html
I have attached patch that prints the warning when passed -Wvariadic-macros
(I mostly followed it along lines of -Wlong-long).
OK for trunk ?
[libcpp]
* macro.c (parse_params): Remove condition CPP_OPTION (pfile, cpp_pedantic).
[gcc/c-family]
* c.opt (-Wvariadic-macros): Init(-1) instead of Init(1).
* c-opts.c (c_common_handle_option): Add case OPT_Wvariadic_macros.
(sanitize_cpp_opts): Check condition for pedantic or
warn_traditional.
Thanks and Regards,
Prathamesh
On Wed, Apr 23, 2014 at 11:30 PM, Prathamesh Kulkarni
<bilbotheelffriend@gmail.com> wrote:
> forgot to add gcc-patches@gcc.gnu.org. Sorry for the double-post.
>
> On Wed, Apr 23, 2014 at 11:28 PM, Prathamesh Kulkarni
> <bilbotheelffriend@gmail.com> wrote:
>> This is a follow up mail to http://gcc.gnu.org/ml/gcc-help/2014-04/msg00096.html
>> I have attached patch that prints the warning when passed -Wvariadic-macros
>> (I mostly followed it along lines of -Wlong-long).
>> OK for trunk ?
>>
>> [libcpp]
>> * macro.c (parse_params): Remove condition CPP_OPTION (pfile, cpp_pedantic).
>>
>> [gcc/c-family]
>> * c.opt (-Wvariadic-macros): Init(-1) instead of Init(1).
>> * c-opts.c (c_common_handle_option): Add case OPT_Wvariadic_macros.
>> (sanitize_cpp_opts): Check condition for pedantic or
>> warn_traditional.
>>
>> Thanks and Regards,
>> Prathamesh
Index: libcpp/macro.c
===================================================================
--- libcpp/macro.c (revision 209470)
+++ libcpp/macro.c (working copy)
@@ -2800,8 +2800,7 @@ parse_params (cpp_reader *pfile, cpp_mac
(pfile, CPP_W_VARIADIC_MACROS,
"anonymous variadic macros were introduced in C99");
}
- else if (CPP_OPTION (pfile, cpp_pedantic)
- && CPP_OPTION (pfile, warn_variadic_macros))
+ else if (CPP_OPTION (pfile, warn_variadic_macros))
cpp_pedwarning (pfile, CPP_W_VARIADIC_MACROS,
"ISO C does not permit named variadic macros");
Index: gcc/c-family/c-opts.c
===================================================================
--- gcc/c-family/c-opts.c (revision 209470)
+++ gcc/c-family/c-opts.c (working copy)
@@ -396,6 +396,10 @@ c_common_handle_option (size_t scode, co
cpp_opts->cpp_warn_long_long = value;
break;
+ case OPT_Wvariadic_macros:
+ cpp_opts->warn_variadic_macros = value;
+ break;
+
case OPT_Wmissing_include_dirs:
cpp_opts->warn_missing_include_dirs = value;
break;
@@ -1227,8 +1231,9 @@ sanitize_cpp_opts (void)
/* Similarly with -Wno-variadic-macros. No check for c99 here, since
this also turns off warnings about GCCs extension. */
- cpp_opts->warn_variadic_macros
- = cpp_warn_variadic_macros && (pedantic || warn_traditional);
+ if (cpp_warn_variadic_macros == -1)
+ cpp_warn_variadic_macros = pedantic || warn_traditional;
+ cpp_opts->warn_variadic_macros = cpp_warn_variadic_macros;
/* If we're generating preprocessor output, emit current directory
if explicitly requested or if debugging information is enabled.
Index: gcc/c-family/c.opt
===================================================================
--- gcc/c-family/c.opt (revision 209470)
+++ gcc/c-family/c.opt (working copy)
@@ -785,7 +785,7 @@ C ObjC C++ ObjC++ Var(warn_unused_result
Warn if a caller of a function, marked with attribute warn_unused_result, does not use its return value
Wvariadic-macros
-C ObjC C++ ObjC++ Var(cpp_warn_variadic_macros) Init(1) Warning
+C ObjC C++ ObjC++ Var(cpp_warn_variadic_macros) Init(-1) Warning
Warn about using variadic macros
Wvarargs