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