This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Add option to control warnings added through attribure "warning"
- From: Jeff Law <law at redhat dot com>
- To: Nikolai Merinov <n dot merinov at inango-systems dot com>, Martin Sebor <msebor at gmail dot com>, gcc-patches at gcc dot gnu dot org
- Date: Wed, 7 Nov 2018 14:03:57 -0700
- Subject: Re: [PATCH] Add option to control warnings added through attribure "warning"
- References: <294fd87f-05c2-d804-87cf-7b28563e931e@inango-systems.com> <810c4b6a-afe5-922e-f2a1-476190128d37@gmail.com> <68f9e48b-7c31-1d1c-3f58-9cd115403c60@inango-systems.com> <6719869f-217c-53fb-2173-47ddae990512@gmail.com> <111c876e-921a-acbc-3bbf-ce0bb306b4fe@inango-systems.com>
On 10/15/18 9:21 AM, Nikolai Merinov wrote:
> Hi Martin,
>
> On 10/15/18 6:20 PM, Martin Sebor wrote:
>> 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.
>>
> Thank you for mentioning. There was my mistake. Now it's attached
>>
>>> 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
I split up the ChangeLog and fixed a very minor whitespace issue in the
docs and installed the patch.
I went round and round over whether or not to change the doc text. It
discusses the attribute and the warning and it's easy to mix up the two.
But ultimately I decided not to change it.
Thanks and sorry for the long delays.
Jeff
>