Suppress a bogus -Warray-bounds in modules/superres/src/optical_flow.cpp

This is actually the same warning that the suppression at the bottom
suppresses, but that one doesn't suppress it when using a native compiler
(go figure).

I remove the forced inclusion of precompiled headers into all sources,
since otherwise this workaround doesn't work - the header with the warning
is included before I can use a pragma.
pull/3401/head
Roman Donchenko 10 years ago
parent a28cde9c3b
commit 13d67b6ae7
  1. 4
      cmake/OpenCVPCHSupport.cmake
  2. 19
      modules/superres/src/optical_flow.cpp

@ -147,9 +147,9 @@ MACRO(_PCH_GET_TARGET_COMPILE_FLAGS _cflags _header_name _pch_path _dowarn )
# if you have different versions of the headers for different build types # if you have different versions of the headers for different build types
# you may set _pch_dowarn # you may set _pch_dowarn
IF (_dowarn) IF (_dowarn)
SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include \"${CMAKE_CURRENT_BINARY_DIR}/${_header_name}\" -Winvalid-pch " ) set(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -Winvalid-pch")
ELSE (_dowarn) ELSE (_dowarn)
SET(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS} -include \"${CMAKE_CURRENT_BINARY_DIR}/${_header_name}\" " ) set(${_cflags} "${PCH_ADDITIONAL_COMPILER_FLAGS}")
ENDIF (_dowarn) ENDIF (_dowarn)
ELSE(CMAKE_COMPILER_IS_GNUCXX) ELSE(CMAKE_COMPILER_IS_GNUCXX)

@ -40,6 +40,20 @@
// //
//M*/ //M*/
#if defined(__arm__) && defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)
// While compiling CV_INIT_ALGORITHM(Farneback_GPU, ...) below, GCC emits a bogus
// -Warray-bounds warning in GpuMat::~GpuMat. Also, for some reason, suppressing
// it inside precomp.hpp doesn't work (probably because it's precompiled).
// Thus, we include this before it's included by precomp.hpp.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Warray-bounds"
#include "opencv2/core/gpumat.hpp"
#pragma GCC diagnostic pop
// Even more strangely, this suppression doesn't work when cross-compiling.
// For that, there's another suppression at the bottom of the file.
#endif
#include "precomp.hpp" #include "precomp.hpp"
using namespace std; using namespace std;
@ -986,7 +1000,8 @@ Ptr<DenseOpticalFlowExt> cv::superres::createOptFlow_Farneback_OCL()
#endif #endif
// Suppress specific warnings during cross-compilation for ARM // Even though this looks as if it covers nothing, it actually suppress a warning in
#if defined(__arm__) && defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 8) // CV_INIT_ALGORITHM(Farneback_GPU, ...). See the top comment for more explanation.
#if defined(__arm__) && defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)
# pragma GCC diagnostic ignored "-Warray-bounds" # pragma GCC diagnostic ignored "-Warray-bounds"
#endif #endif

Loading…
Cancel
Save