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: Manuel López-Ibáñez <lopezibanez at gmail dot com>
- To: Prathamesh Kulkarni <bilbotheelffriend at gmail dot com>
- Cc: "Joseph S. Myers" <joseph at codesourcery dot com>, Gcc Patch List <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 29 Apr 2014 15:19:44 +0200
- 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> <CAJXstsBhcsVfnN2dOmW0EWdnub-DQSfTs76FnDOm6mrs5VgPhg at mail dot gmail dot com> <CAESRpQDa-T8YMSMozYrKaYQNjwykEySFn+HwEnDA+ALtBZiSNw at mail dot gmail dot com> <CAJXstsDq2O-aVnOymG=3AAAWu5gnKSn-Yavn49wx5=Hj6y=MTw at mail dot gmail dot com>
This hunk in your patch doesn't seem related:
@@ -509,6 +509,9 @@ Warn about missing fields in struct init
Wsizeof-pointer-memaccess
C ObjC C++ ObjC++ Var(warn_sizeof_pointer_memaccess) Warning
LangEnabledBy(C ObjC C++ ObjC++,Wall)
+Wsizeof-array-argument
+C Var(warn_sizeof_array_argument) Warning LangEnabledBy(C,Wall)
+
Wsuggest-attribute=format
C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
Warn about functions which might be candidates for format attributes
Also, it would be good to update doc/invoke.texi, the current
description is a bit confusing. It says it is enabled by default when
it actually isn't (nor after your patch). I propose something like:
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi (revision 208669)
+++ gcc/doc/invoke.texi (working copy)
@@ -4997,9 +4997,10 @@
@item -Wvariadic-macros
@opindex Wvariadic-macros
@opindex Wno-variadic-macros
-Warn if variadic macros are used in pedantic ISO C90 mode, or the GNU
-alternate syntax when in pedantic ISO C99 mode. This is default.
-To inhibit the warning messages, use @option{-Wno-variadic-macros}.
+Warn if variadic macros are used in ISO C90 mode, or if the GNU
+alternate syntax is used in ISO C99 mode. This is enabled by either
+@option{-Wpedantic} or @option{-Wtraditional}. To inhibit the warning
+messages, use @option{-Wno-variadic-macros}.
@item -Wvarargs
@opindex Wvarargs
On 29 April 2014 14:41, Prathamesh Kulkarni <bilbotheelffriend@gmail.com> wrote:
> On Tue, Apr 29, 2014 at 2:07 PM, Manuel López-Ibáñez
> <lopezibanez@gmail.com> wrote:
>> On 23 April 2014 20:03, Prathamesh Kulkarni <bilbotheelffriend@gmail.com> wrote:
>>> 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 ?
>>
>> Hi Prathamesh,
>>
>> Thanks for CCing me! I cannot approve patches, but it looks almost
>> perfect to me. Did you run the regression testsuite and compare the
>> results before/after your patch? I would expect at least one testcase
>> testing this warning that would be affected by the change. If not, it
>> would be nice to add testcases for this. Also, there is another place
>> that tests for both Wpedantic and Wvariadic-macros just above the one
>> that you modify. I think you should update all of them to just test
>> for Wvariadic-macros.
>>
>> Once you do that, I hope Joseph will approve it quickly, it seems an
>> obvious fix to me for consistency with Wlong-long and to allow people
>> to use this warning without enabling Wpedantic (also, it will enable
>> the warning with Wtraditional as intended, which is currently broken).
>>
> Thanks, I modified the patch to remove Wpedantic check and added a new
> test-case.
> For changes to libcpp, do I need to run the entire test-suite or only runinng
> libcpp tests (RUNTESTFLAGS=cpp.exp) is fine ?
> I ran libcpp tests, and there appeared to be no failures.
>
> [libcpp]
> * macro.c (parse_params): Remove check for Wpedantic for variadic macros.
>
> [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.
>
> [gcc/testsuite/gcc.dg/cpp]
> * Wvariadic-5.c: New test-case.
>
> Thanks and Regards,
> Prathamesh
>
>> Cheers,
>>
>> Manuel.