Silence a couple specific warning instances

This commit is contained in:
Chris Robinson
2019-09-18 12:16:08 -07:00
parent 66565ca7a3
commit b8f64155e9
2 changed files with 28 additions and 1 deletions
+1 -1
View File
@@ -222,7 +222,7 @@ IF(MSVC)
ENDIF()
ELSE()
SET(C_FLAGS ${C_FLAGS} -Winline -Wunused -Wall -Wextra -Wshadow -Wconversion -Wcast-align
-Wpedantic -Wno-zero-length-array
-Wpedantic
$<$<COMPILE_LANGUAGE:CXX>:-Wold-style-cast -Wnon-virtual-dtor -Woverloaded-virtual>)
IF(ALSOFT_WERROR)
+27
View File
@@ -11,6 +11,23 @@
#include <utility>
#ifdef _MSC_VER
#define DIAGNOSTIC_PUSH _Pragma("warning(push)")
#define GNUDIAGNOSTIC(x)
#define MVSDIAGNOSTIC(x) _Pragma(x)
#define DIAGNOSTIC_POP _Pragma("warning(pop)")
#elif defined(__GNUC__) || defined(__clang__)
#define DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
#define GNUDIAGNOSTIC(x) _Pragma(x)
#define MVSDIAGNOSTIC(x)
#define DIAGNOSTIC_POP _Pragma("GCC diagnostic push")
#else
#define DIAGNOSTIC_PUSH
#define GNUDIAGNOSTIC(x)
#define MVSDIAGNOSTIC(x)
#define DIAGNOSTIC_POP
#endif
void *al_malloc(size_t alignment, size_t size);
void *al_calloc(size_t alignment, size_t size);
void al_free(void *ptr) noexcept;
@@ -92,8 +109,14 @@ inline T* assume_aligned(T *ptr) noexcept
#endif
}
/* At least VS 2015 complains that 'ptr' is unused when the given type's
* destructor is trivial (a no-op). So disable that warning for this call.
*/
DIAGNOSTIC_PUSH
MVSDIAGNOSTIC("warning(disable : 4100)")
template<typename T>
inline void destroy_at(T *ptr) { ptr->~T(); }
DIAGNOSTIC_POP
template<typename T>
inline void destroy(T first, const T end)
@@ -233,7 +256,11 @@ struct FlexArray {
const index_type mSize;
DIAGNOSTIC_PUSH
GNUDIAGNOSTIC("GCC diagnostic ignored \"-Wpedantic\"")
MVSDIAGNOSTIC("warning(disable : 4200)")
alignas(alignment) element_type mArray[0];
DIAGNOSTIC_POP
static std::unique_ptr<FlexArray> Create(index_type count)
{