On Mon, May 8, 2017 at 4:31 PM, Martin Sebor <mse...@gmail.com> wrote:
> On 05/04/2017 10:13 PM, Jeff Law wrote:
>>
>> On 04/28/2017 04:02 PM, Martin Sebor wrote:
>>>
>>> The two options were included in -Wall and enabled for all front
>>> ends but only made to be recognized by the driver for the C family
>>> of compilers.  That made it impossible to suppress those warnings
>>> when compiling code for those other front ends (like Fortran).
>>>
>>> The attached patch adjusts the warnings so that they are only
>>> enabled for the C family of front ends and not for any others,
>>> as per Richard's suggestion.  (The other solution would have
>>> been to make the warnings available to all front ends.  Since
>>> non-C languages don't have a way of calling the affected
>>> functions -- or do they? -- this is probably not necessary.)
>>>
>>> Martin
>>>
>>> gcc-80545.diff
>>>
>>>
>>> PR driver/80545 - option -Wstringop-overflow not recognized by Fortran
>>>
>>> gcc/c-family/ChangeLog:
>>>
>>>     PR driver/80545
>>>     * c.opt (-Walloc-size-larger-than, -Wstringop-overflow): Enable
>>>     and make available for the C family only.
>>
>> OK.
>> jeff
>
>
> It turns out that this is not the right fix.  I overlooked that
> -Wstringop-overflow is meant to be enabled by default and while
> removing the Init(2) bit and replacing it with LangEnabledBy (C
> ObjC C++ ObjC++, Wall, 2, 0) suppresses the warning in Fortran
> it also disables it by default in C/C++ unless -Wall is used.
>
> By my reading of the Option properties part of the GCC Internals
> manual there is no way to initialize a warning to on by default
> while making it available only in a subset of languages.  The
> only way I can think of is to initialize it in the .opt file to
> something like -1 and then change it at some point to 2 somewhere
> in the C/C++ front ends.  That seems pretty cumbersome.  Am I
> missing some trick?

Maybe just enhance the machinery to allow

LangEnabledBy (C ObjC C++ ObjC++, , 2, 0)

(note empty "by")

?

> Martin

Reply via email to