diff --git a/vtkm/ListTag.h b/vtkm/ListTag.h index 8c41686be..853ce6406 100644 --- a/vtkm/ListTag.h +++ b/vtkm/ListTag.h @@ -49,7 +49,7 @@ struct ListTagCheck /// #define VTKM_IS_LIST_TAG(tag) \ VTKM_STATIC_ASSERT_MSG( \ - ::vtkm::internal::ListTagCheck::Valid, \ + (::vtkm::internal::ListTagCheck::Valid), \ "Provided type is not a valid VTK-m list tag.") namespace detail { diff --git a/vtkm/internal/Configure.h.in b/vtkm/internal/Configure.h.in index c62aaf388..791f8053a 100644 --- a/vtkm/internal/Configure.h.in +++ b/vtkm/internal/Configure.h.in @@ -137,12 +137,22 @@ #define VTK_M_THIRDPARTY_CLANG_WARNING_PRAGMAS #endif +// Older versions of GCC don't support the push/pop pragmas. Right now we are +// not checking for GCC 3 or earlier. I'm not sure we have a use case for that. +#if defined(VTKM_GCC) && (__GNUC__ == 4 && __GNUC_MINOR__ < 6) +#define VTK_M_THIRDPARTY_WARNINGS_PUSH +#define VTK_M_THRIDPARTY_WARNINGS_POP +#else +#define VTK_M_THIRDPARTY_WARNINGS_PUSH _Pragma("GCC diagnostic push") +#define VTK_M_THRIDPARTY_WARNINGS_POP _Pragma("GCC diagnostic pop") +#endif + #define VTKM_THIRDPARTY_PRE_INCLUDE \ - _Pragma("GCC diagnostic push") \ + VTK_M_THIRDPARTY_WARNINGS_PUSH \ VTK_M_THIRDPARTY_GCC_WARNING_PRAGMAS \ VTK_M_THIRDPARTY_CLANG_WARNING_PRAGMAS #define VTKM_THIRDPARTY_POST_INCLUDE \ - _Pragma("GCC diagnostic pop") + VTK_M_THRIDPARTY_WARNINGS_POP #else #define VTKM_THIRDPARTY_PRE_INCLUDE