Ping... the latest version of the patch was here: https://gcc.gnu.org/ml/gcc-patches/2016-11/msg00505.html
Thanks Bernd. On 11/02/16 22:15, Bernd Edlinger wrote: > On 11/02/16 18:51, Jason Merrill wrote: >> On 11/02/2016 02:11 AM, Bernd Edlinger wrote: >>> On 11/01/16 19:15, Bernd Edlinger wrote: >>>> On 11/01/16 18:11, Jason Merrill wrote: >>>>> On Tue, Nov 1, 2016 at 11:45 AM, Bernd Edlinger >>>>> <bernd.edlin...@hotmail.de> wrote: >>>>>> On 11/01/16 16:20, Jason Merrill wrote: >>>>>>> On 10/17/2016 03:18 PM, Bernd Edlinger wrote: >>>>>>> I'm not even sure we need a new warning. Can we combine this >>>>>>> warning >>>>>>> with the block that currently follows? >>>>>> >>>>>> After 20 years of not having a warning on that, >>>>>> an implicitly enabled warning would at least break lots of bogus >>>>>> test cases. >>>>> >>>>> Would it, though? Which test cases still break with the current >>>>> patch? >>>> >>>> Less than before, but there are still at least a few of them. >>>> >>>> I can make a list and send it tomorrow. >>> >>> FAIL: g++.dg/cpp1y/lambda-generic-udt.C -std=gnu++14 (test for excess >>> errors) >>> FAIL: g++.dg/cpp1y/lambda-generic-xudt.C -std=gnu++14 (test for excess >>> errors) >>> FAIL: g++.dg/init/new15.C -std=c++11 (test for excess errors) >>> FAIL: g++.dg/init/new15.C -std=c++14 (test for excess errors) >>> FAIL: g++.dg/init/new15.C -std=c++98 (test for excess errors) >>> FAIL: g++.dg/ipa/inline-1.C -std=gnu++11 (test for excess errors) >>> FAIL: g++.dg/ipa/inline-1.C -std=gnu++14 (test for excess errors) >>> FAIL: g++.dg/ipa/inline-1.C -std=gnu++98 (test for excess errors) >>> FAIL: g++.dg/ipa/inline-2.C -std=gnu++11 (test for excess errors) >>> FAIL: g++.dg/ipa/inline-2.C -std=gnu++14 (test for excess errors) >>> FAIL: g++.dg/ipa/inline-2.C -std=gnu++98 (test for excess errors) >>> FAIL: g++.dg/tc1/dr20.C -std=c++11 (test for excess errors) >>> FAIL: g++.dg/tc1/dr20.C -std=c++14 (test for excess errors) >>> FAIL: g++.dg/tc1/dr20.C -std=c++98 (test for excess errors) >>> FAIL: g++.dg/tree-ssa/inline-1.C -std=gnu++11 (test for excess errors) >>> FAIL: g++.dg/tree-ssa/inline-1.C -std=gnu++14 (test for excess errors) >>> FAIL: g++.dg/tree-ssa/inline-1.C -std=gnu++98 (test for excess errors) >>> FAIL: g++.dg/tree-ssa/inline-2.C -std=gnu++11 (test for excess errors) >>> FAIL: g++.dg/tree-ssa/inline-2.C -std=gnu++14 (test for excess errors) >>> FAIL: g++.dg/tree-ssa/inline-2.C -std=gnu++98 (test for excess errors) >>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto >>> -flto-partition=1to1 -fno-use-linker-plugin >>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto >>> -flto-partition=none -fuse-linker-plugin >>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O0 -flto >>> -fuse-linker-plugin -fno-fat-lto-objects >>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto >>> -flto-partition=1to1 -fno-use-linker-plugin >>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto >>> -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects >>> FAIL: g++.dg/lto/20080908-1 cp_lto_20080908-1_0.o assemble, -O2 -flto >>> -fuse-linker-plugin >>> FAIL: g++.dg/lto/pr68811 cp_lto_pr68811_0.o assemble, -O2 >>> FAIL: g++.old-deja/g++.law/except1.C -std=gnu++11 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.law/except1.C -std=gnu++14 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.law/except1.C -std=gnu++98 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.mike/p700.C -std=gnu++11 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.mike/p700.C -std=gnu++14 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.mike/p700.C -std=gnu++98 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/builtins10.C -std=c++11 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/builtins10.C -std=c++14 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/realloc.C -std=c++11 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/realloc.C -std=c++14 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/realloc.C -std=c++98 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/vbase5.C -std=c++11 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/vbase5.C -std=c++14 (test for excess >>> errors) >>> FAIL: g++.old-deja/g++.other/vbase5.C -std=c++98 (test for excess >>> errors) >>> >>> >>> The lto test case does emit the warning when assembling, but >>> it still produces an executable and even executes it. >>> >>> Also g++.dg/cpp1y/lambda-generic-udt.C, g++.dg/tc1/dr20.C >>> and g++.old-deja/g++.other/vbase5.C are execution tests. >>> >>> So I was wrong to assume these were all compile-only tests. >>> >>> I think that list should be fixable, if we decide to enable >>> the warning by default. >> >> Yes, either by fixing the prototypes or disabling the warning. >> > > Yes, I am inclined to enable the warning by default now. > > Most of the test cases are fixable in a fairly obvious way, > see attachment. > > But I am unsure about g++.old-deja/g++.other/builtins10.C: > > // { dg-do assemble } > // Test that built-in functions don't warn when prototyped without > arguments. > // Origin: PR c++/9367 > // Copyright (C) 2003 Free Software Foundation. > > extern "C" int snprintf(); > > > PR c++/9367 was a *bogus* warning. Either delete the test case, or > change the expectation to the new warning? > > But the libitm warnings are a real bug, the prototypes of the _ITM_ > builtin functions and in the libitm.h simply do not match, that was > just not visible before because the test suite does apparently > not use -Wall. > > > Bernd.