This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add option to control warnings added through attribure "warning"


On 10/15/2018 01:55 AM, Nikolai Merinov wrote:
Hi Martin,

On 10/12/18 9:58 PM, Martin Sebor wrote:
On 10/12/2018 04:14 AM, Nikolai Merinov wrote:
Hello,

In https://gcc.gnu.org/ml/gcc-patches/2018-09/msg01795.html mail I
suggested patch to have ability to control behavior of
"__attribute__((warning))" in case when option "-Werror" enabled. Usage
example:

#include <string.h>
int a() __attribute__((warning("Warning: `a' was used")));
int a() { return 1; }
int main () { return a(); }

$ gcc -Werror test.c
test.c: In function ‘main’:
test.c:4:22: error: call to ‘a’ declared with attribute warning:
Warning: `a' was used [-Werror]
 int main () { return a(); }
                      ^
cc1: all warnings being treated as errors
$ gcc -Werror -Wno-error=warning-attribute test.c
test.c: In function ‘main’:
test.c:4:22: warning: call to ‘a’ declared with attribute warning:
Warning: `a' was used
 int main () { return a(); }
                      ^
Can you provide any feedback on suggested changes?

It seems like a useful feature and in line with the philosophy
that distinct warnings should be controlled by their own options.

I would only suggest to consider changing the name to
-Wattribute-warning, because it applies specifically to that
attribute (as opposed to warnings about attributes in general).

There are many attributes in GCC and diagnosing problems that
are unique to each, under the same -Wattributes option, is
becoming too coarse and overly limiting.  To make it more
flexible, I expect new options will need to be introduced,
such as -Wattribute-alias (to control aspects of the alias
attribute and others related to it), or -Wattribute-const
(to control diagnostics about functions declared with
attribute const that violate the attribute's constraints).

An alternative might be to introduce a single -Wattribute=
<attribute-list> option where the <attribute-list> gives
the names of all the distinct attributes whose unique
diagnostics one might need to control.

Martin

Currently there is several styles already in use:

-Wattribute-alias where "attribute" word used as prefix for name of attribute, -Wsuggest-attribute=[pure|const|noreturn|format|malloc] where name of attribute passed as possible argument,
-Wmissing-format-attribute where "attribute" word used as suffix,
-Wdeprecated-declarations where "attribute" word not used at all even if this warning option was created especially for "deprecated" attribute.

I changed name to "-Wattribute-warning" as you suggested, but unifying style for all attribute related warning looks like separate activity. Please check new patch in attachments.


Thanks for survey!  I agree that making the existing options
consistent (if that's what we want) should be done separately.

Martin

PS It doesn't look like your latest attachments made it to
the list.


Updated changelog:

gcc/Changelog

2018-10-14  Nikolai Merinov <n.merinov@inango-systems.com>

         * gcc/common.opt: Add -Wattribute-warning.
        * gcc/doc/invoke.texi: Add documentation for -Wno-attribute-warning.
         * gcc/testsuite/gcc.dg/Wno-attribute-warning.c: New test.
         * gcc/expr.c (expand_expr_real_1): Add new attribute to warning_at
         call to allow user configure behavior of "warning" attribute


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]