From 988e404586900754e7e1748c87c0ec12b757cf87 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sun, 7 Jun 2015 00:07:49 +0300 Subject: [PATCH] Work-around for false -Wtype-limits from GCC --- libuavcan/CMakeLists.txt | 2 +- libuavcan/include/uavcan/marshal/array.hpp | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libuavcan/CMakeLists.txt b/libuavcan/CMakeLists.txt index f40f0f8c5b..780a2215d6 100644 --- a/libuavcan/CMakeLists.txt +++ b/libuavcan/CMakeLists.txt @@ -103,7 +103,7 @@ if (DEBUG_BUILD) if (COMPILER_IS_GCC_COMPATIBLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -pedantic -Wfloat-equal -Wconversion") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-conversion -Wcast-align -Wmissing-declarations -Wlogical-op") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=array-bounds") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wtype-limits -Wno-error=array-bounds") set(cpp03_flags "-std=c++03 -Wno-variadic-macros -Wno-long-long") set(optim_flags "-O3 -DNDEBUG -g0") else () diff --git a/libuavcan/include/uavcan/marshal/array.hpp b/libuavcan/include/uavcan/marshal/array.hpp index c7263d106e..2205925466 100644 --- a/libuavcan/include/uavcan/marshal/array.hpp +++ b/libuavcan/include/uavcan/marshal/array.hpp @@ -480,6 +480,10 @@ class UAVCAN_EXPORT Array : public ArrayImpl return 1; } +#if __GNUC__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wtype-limits" +#endif int decodeImpl(ScalarCodec& codec, const TailArrayOptimizationMode tao_mode, TrueType) /// Dynamic { StaticAssert::check(); @@ -513,7 +517,7 @@ class UAVCAN_EXPORT Array : public ArrayImpl { return res_sz; } - if (static_cast(sz) > MaxSize_) + if (static_cast(sz) > MaxSize_) // False 'type-limits' warning occurs here { return -ErrInvalidMarshalData; } @@ -527,6 +531,9 @@ class UAVCAN_EXPORT Array : public ArrayImpl UAVCAN_ASSERT(0); // Unreachable return -ErrLogic; } +#if __GNUC__ +# pragma GCC diagnostic pop +#endif template void packSquareMatrixImpl(const InputIter src_row_major)