https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69967
Bug ID: 69967
Summary: #pragma GCC diagnostic ignored being ignored for
-Wunused-variable in some cases
Product: gcc
Version: 5.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: yaghmour.shafik at gmail dot com
Target Milestone: ---
Given the following example:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
#include <boost/filesystem/operations.hpp>
#pragma GCC diagnostic pop
int main()
{
}
and the following command line options:
--std=c++11 -Wno-deprecated-declarations -Wunused-variable -Werror -O2
gcc 5.3 produces the following diagnostics:
error: ‘boost::system::posix_category’ defined but not used
[-Werror=unused-variable]
static const error_category & posix_category = generic_category();
^
error: ‘boost::system::errno_ecat’ defined but not used
[-Werror=unused-variable]
static const error_category & errno_ecat = generic_category();
^
rror: ‘boost::system::native_ecat’ defined but not used
[-Werror=unused-variable]
static const error_category & native_ecat = system_category();
^
even though it should be ignored due to the:
#pragma GCC diagnostic ignored "-Wunused-variable"
You can find an online example that reproduces this here
http://melpon.org/wandbox/permlink/LhOgWD7JOFrf95ZQ
This issue only shows up when optimization is turned on with -O1 or above.
GCC 4.9.2 and 6.0.0 do not have this issue. In the case of GCC 6.0.0 it is hard
to tell if the issue is fixed since the diagnostic does not show up all even
when reduce the test case to the following:
#include <boost/filesystem/operations.hpp>
int main(){}
So in 6.0.0 the warning appears to be less aggressive but now we don't know if
the underlying issue with the pragma is fixed or just hidden by change in
behavior of the warning.