On Tue, Apr 29, 2014 at 7:37 PM, Prathamesh Kulkarni <bilbotheelffri...@gmail.com> wrote: > On Tue, Apr 29, 2014 at 6:49 PM, Manuel López-Ibáñez > <lopeziba...@gmail.com> wrote: >> This hunk in your patch doesn't seem related: > Oops, Sorry. Removed that, and re-tested. >> >> @@ -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 > Thanks. I added this to the patch. >> >> On 29 April 2014 14:41, Prathamesh Kulkarni <bilbotheelffri...@gmail.com> >> wrote: > > Is this version OK ? > > [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. > > [gcc/doc] > * invoke.text: Change documentation for Wvariadic-macros option. Sorry for the spelling mistake. Re-posting the changelog.
[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. [gcc/doc] * invoke.texi (-Wvariadic-macros): Change documentation for -Wvariadic-macros option. Thanks and Regards, Prathamesh > > Thanks and Regards, > Prathamesh > >>> On Tue, Apr 29, 2014 at 2:07 PM, Manuel López-Ibáñez >>> <lopeziba...@gmail.com> wrote: >>>> On 23 April 2014 20:03, Prathamesh Kulkarni <bilbotheelffri...@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.
Index: libcpp/macro.c =================================================================== --- libcpp/macro.c (revision 209800) +++ libcpp/macro.c (working copy) @@ -2794,14 +2794,12 @@ parse_params (cpp_reader *pfile, cpp_mac pfile->spec_nodes.n__VA_ARGS__); pfile->state.va_args_ok = 1; if (! CPP_OPTION (pfile, c99) - && CPP_OPTION (pfile, cpp_pedantic) && CPP_OPTION (pfile, warn_variadic_macros)) cpp_pedwarning (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 209800) +++ 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 209800) +++ 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 Index: gcc/doc/invoke.texi =================================================================== --- gcc/doc/invoke.texi (revision 209800) +++ gcc/doc/invoke.texi (working copy) @@ -4997,9 +4997,10 @@ modes. To inhibit the warning messages, @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 Index: gcc/testsuite/gcc.dg/cpp/Wvariadic-5.c =================================================================== --- gcc/testsuite/gcc.dg/cpp/Wvariadic-5.c (revision 0) +++ gcc/testsuite/gcc.dg/cpp/Wvariadic-5.c (working copy) @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-std=iso9899:1990 -Wvariadic-macros" } */ + +#define f(x,...) /* { dg-warning "variadic" } */ +#define g(x,y...) /* { dg-warning "variadic" } */ +int not_empty;