On Wed, May 30, 2018 at 3:56 PM, Jeff Law <law@redhat.com> wrote:
On 04/22/2018 01:17 PM, dave.pagan@oracle.com wrote:
This patch fixes handling of -Werror=return-type as well as
-Wno-return-type. Currently, -Werror=return-type does not turn the
warnings into errors and -Wno-return-type does not turn off
warning/error. Now they both work as expected.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55976
Initialize warn_return_type only for C++/C++ with ObjC extensions. In C,
this allows us to differentiate between default (no option), or cases
where -Wreturn-type/-Wno-return-type are specified. Elsewhere, update
references to warn_return_type (for C) to reflect change in initialization.
Patch was successfully bootstrapped and tested on x86_64-linux.
--Dave
CL-55976
/c
2018-04-22 David Pagan <dave.pagan@oracle.com>
PR c/55976
* c-decl.c (grokdeclarator): Update check for return type warnings.
(start_function): Likewise.
(finish_function): Likewise.
* c-typeck.c (c_finish_return): Update check for return type warnings.
Pass OPT_Wreturn_type to pedwarn when appropriate.
* c-opts.c (c_common_post_options): Set default for warn_return_type
for C++/C++ with ObjC extensions only. For C, makes it possible to
differentiate between default (no option), -Wreturn-type, and
-Wno-return-type.
/testsuite
2018-04-22 David Pagan <dave.pagan@oracle.com>
PR c/55976
* gcc.dg/noncompile/pr55976-1.c: New test.
* gcc.dg/noncompile/pr55976-2.c: New test.
THanks. Installed on the trunk.
On x86, I got
FAIL: gcc.dg/noncompile/pr55976-1.c -O0 (test for excess errors)
FAIL: gcc.dg/noncompile/pr55976-1.c -O1 (test for excess errors)
FAIL: gcc.dg/noncompile/pr55976-1.c -O2 -flto -fno-use-linker-plugin
-flto-partition=none (test for excess errors)
FAIL: gcc.dg/noncompile/pr55976-1.c -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects (test for excess errors)
FAIL: gcc.dg/noncompile/pr55976-1.c -O2 (test for excess errors)
FAIL: gcc.dg/noncompile/pr55976-1.c -O3 -g (test for excess errors)
FAIL: gcc.dg/noncompile/pr55976-1.c -Os (test for excess errors)
[hjl@gnu-skx-1 testsuite]$
/export/ssd/git/gcc-test-native/bld/gcc/xgcc
-B/export/ssd/git/gcc-test-native/bld/gcc/
/export/ssd/git/gcc-test-native/src-trunk/gcc/testsuite/gcc.dg/noncompile/pr55976-1.c
-mx32 -B/export/ssd/git/gcc-test-native/bld/x86_64-pc-linux-gnu/32/libmpx/
-B/export/ssd/git/gcc-test-native/bld/x86_64-pc-linux-gnu/32/libmpx/mpxrt
-L/export/ssd/git/gcc-test-native/bld/x86_64-pc-linux-gnu/32/libmpx/mpxrt/.libs
-B/export/ssd/git/gcc-test-native/bld/x86_64-pc-linux-gnu/32/libmpx/
-B/export/ssd/git/gcc-test-native/bld/x86_64-pc-linux-gnu/32/libmpx/mpxwrap
-L/export/ssd/git/gcc-test-native/bld/x86_64-pc-linux-gnu/32/libmpx/mpxwrap/.libs
-fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -flto
-fuse-linker-plugin -fno-fat-lto-objects -Werror=return-type -S -o
pr55976-1.s
/export/ssd/git/gcc-test-native/src-trunk/gcc/testsuite/gcc.dg/noncompile/pr55976-1.c:
In function \u2018t\u2019:
/export/ssd/git/gcc-test-native/src-trunk/gcc/testsuite/gcc.dg/noncompile/pr55976-1.c:7:20:
error: \u2018return\u2019 with a value, in function returning void
[-Werror=return-type]
/export/ssd/git/gcc-test-native/src-trunk/gcc/testsuite/gcc.dg/noncompile/pr55976-1.c:7:6:
note: declared here
/export/ssd/git/gcc-test-native/src-trunk/gcc/testsuite/gcc.dg/noncompile/pr55976-1.c:
In function \u2018b\u2019:
/export/ssd/git/gcc-test-native/src-trunk/gcc/testsuite/gcc.dg/noncompile/pr55976-1.c:8:12:
error: \u2018return\u2019 with no value, in function returning
non-void [-Werror=return-type]
/export/ssd/git/gcc-test-native/src-trunk/gcc/testsuite/gcc.dg/noncompile/pr55976-1.c:8:5:
note: declared here
cc1: some warnings being treated as errors
[hjl@gnu-skx-1 testsuite]$