Browse Source

Fix compilation error on gcc 12 (#213)

Jorrit Rouwe 3 years ago
parent
commit
367072cdaf
2 changed files with 18 additions and 21 deletions
  1. 15 21
      Jolt/Core/Core.h
  2. 3 0
      Jolt/Core/Result.h

+ 15 - 21
Jolt/Core/Core.h

@@ -119,11 +119,6 @@
 #else
 #define JPH_GCC_SUPPRESS_WARNING(w)
 #endif
-#ifdef JPH_COMPILER_MINGW
-#define JPH_MINGW_SUPPRESS_WARNING(w)	JPH_PRAGMA(GCC diagnostic ignored w)
-#else
-#define JPH_MINGW_SUPPRESS_WARNING(w)
-#endif
 #ifdef JPH_COMPILER_MSVC
 #define JPH_PRAGMA(x)					__pragma(x)
 #define JPH_SUPPRESS_WARNING_PUSH		JPH_PRAGMA(warning (push))
@@ -160,9 +155,6 @@
 	JPH_GCC_SUPPRESS_WARNING("-Winvalid-offsetof")												\
 	JPH_GCC_SUPPRESS_WARNING("-Wclass-memaccess")												\
 																								\
-	JPH_MINGW_SUPPRESS_WARNING("-Wmaybe-uninitialized")										    \
-	JPH_MINGW_SUPPRESS_WARNING("-Wstringop-overflow=")										    \
-																								\
 	JPH_MSVC_SUPPRESS_WARNING(4514) /* 'X' : unreferenced inline function has been removed */	\
 	JPH_MSVC_SUPPRESS_WARNING(4710) /* 'X' : function not inlined */							\
 	JPH_MSVC_SUPPRESS_WARNING(4711) /* function 'X' selected for automatic inline expansion */	\
@@ -206,25 +198,27 @@
 #define JPH_CRASH				do { int *ptr = nullptr; *ptr = 0; } while (false)
 
 // Begin the JPH namespace
-#define JPH_NAMESPACE_BEGIN					\
-	JPH_SUPPRESS_WARNING_PUSH				\
-	JPH_SUPPRESS_WARNINGS					\
+#define JPH_NAMESPACE_BEGIN																		\
+	JPH_SUPPRESS_WARNING_PUSH																	\
+	JPH_SUPPRESS_WARNINGS																		\
 	namespace JPH {
 
 // End the JPH namespace
-#define JPH_NAMESPACE_END					\
-	}										\
+#define JPH_NAMESPACE_END																		\
+	}																							\
 	JPH_SUPPRESS_WARNING_POP
 
-// On MSVC the std library generates warnings, use these macros to disable them
-#define JPH_SUPPRESS_WARNINGS_STD_BEGIN		\
-	JPH_SUPPRESS_WARNING_PUSH				\
-	JPH_MSVC_SUPPRESS_WARNING(4710)			\
-	JPH_MSVC_SUPPRESS_WARNING(4711)			\
-	JPH_MSVC_SUPPRESS_WARNING(4820)			\
-	JPH_MSVC_SUPPRESS_WARNING(4514)
+// Suppress warnings generated by the standard template library
+#define JPH_SUPPRESS_WARNINGS_STD_BEGIN															\
+	JPH_SUPPRESS_WARNING_PUSH																	\
+	JPH_MSVC_SUPPRESS_WARNING(4710)																\
+	JPH_MSVC_SUPPRESS_WARNING(4711)																\
+	JPH_MSVC_SUPPRESS_WARNING(4820)																\
+	JPH_MSVC_SUPPRESS_WARNING(4514)																\
+																								\
+	JPH_GCC_SUPPRESS_WARNING("-Wstringop-overflow=")
 
-#define JPH_SUPPRESS_WARNINGS_STD_END		\
+#define JPH_SUPPRESS_WARNINGS_STD_END															\
 	JPH_SUPPRESS_WARNING_POP
 
 // Standard C++ includes

+ 3 - 0
Jolt/Core/Result.h

@@ -5,6 +5,9 @@
 
 JPH_NAMESPACE_BEGIN
 
+// GCC doesn't properly detect that mState is used to ensure that mResult is initialized
+JPH_GCC_SUPPRESS_WARNING("-Wmaybe-uninitialized")
+
 /// Helper class that either contains a valid result or an error
 template <class Type>
 class Result