[Bug c/28901] -Wunused-variable ignores unused const initialised variables
mark at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Sep 14 09:50:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28901
--- Comment #9 from Mark Wielaard <mark at gcc dot gnu.org> ---
Author: mark
Date: Mon Sep 14 09:49:47 2015
New Revision: 227742
URL: https://gcc.gnu.org/viewcvs?rev=227742&root=gcc&view=rev
Log:
PR28901 -Wunused-variable ignores unused const initialised variables in C
12 years ago it was decided that -Wunused-variable shouldn't warn about
static const variables because some code used const static char rcsid[]
strings which were never used but wanted in the code anyway. But as the
bug points out this hides some real bugs. These days the usage of rcsids
is not very popular anymore. So this patch changes the default to warn
about unused static const variables in C with -Wunused-variable. And it
adds a new option -Wno-unused-const-variable to turn this warning off.
For C++ this new warning is off by default, since const variables can be
used as #defines in C++. New testcases for the new defaults in C and C++
are included testing the new warning and suppressing it with an unused
attribute or using -Wno-unused-const-variable.
gcc/ChangeLog
PR c/28901
* toplev.c (check_global_declaration): Check and use
warn_unused_const_variable.
* doc/invoke.texi (Warning Options): Add -Wunused-const-variable.
(-Wunused-variable): Remove non-constant. For C implies
-Wunused-const-variable.
(-Wunused-const-variable): New.
gcc/c-family/ChangeLog
PR c/28901
* c.opt (Wunused-variable): Option from common.opt.
(Wunused-const-variable): New option.
gcc/cp/ChangeLog
PR c/28901
* cp-objcp-common.c (cxx_warn_unused_global_decl): Remove hard-coded
VAR_P TREE_READONLY override.
gcc/testsuite/ChangeLog
PR c/28901
* g++.dg/warn/unused-variable-1.C: New test.
* g++.dg/warn/unused-variable-2.C: Likewise.
* gcc.dg/unused-4.c: Adjust warning for static const.
* gcc.dg/unused-variable-1.c: New test.
* gcc.dg/unused-variable-2.c: Likewise.
Added:
trunk/gcc/testsuite/g++.dg/warn/unused-variable-1.C
trunk/gcc/testsuite/g++.dg/warn/unused-variable-2.C
trunk/gcc/testsuite/gcc.dg/unused-variable-1.c
trunk/gcc/testsuite/gcc.dg/unused-variable-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-objcp-common.c
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/unused-4.c
trunk/gcc/toplev.c
More information about the Gcc-bugs
mailing list