From b15d0a11a44e6db2071e687ecb52a3df7d5eea90 Mon Sep 17 00:00:00 2001 From: Mark Janes Date: Thu, 28 Jul 2022 15:49:36 -0700 Subject: [PATCH] util: define helpful macros for compiler diagnostic features Suggested-by: Kenneth Graunke Reviewed-by: Kenneth Graunke Part-of: --- src/util/macros.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/util/macros.h b/src/util/macros.h index e978007df6b..652ba63ac5a 100644 --- a/src/util/macros.h +++ b/src/util/macros.h @@ -450,4 +450,26 @@ typedef int lock_cap_t; /* TODO: this could be different on non-x86 architectures. */ #define CACHE_LINE_SIZE 64 +#define DO_PRAGMA(X) _Pragma (#X) + +#if defined(__clang__) +#define PRAGMA_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") +#define PRAGMA_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#define PRAGMA_DIAGNOSTIC_ERROR(X) DO_PRAGMA( clang diagnostic error #X ) +#define PRAGMA_DIAGNOSTIC_WARNING(X) DO_PRAGMA( clang diagnostic warning #X ) +#define PRAGMA_DIAGNOSTIC_IGNORED(X) DO_PRAGMA( clang diagnostic ignored #X ) +#elif defined(__GNUC__) +#define PRAGMA_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") +#define PRAGMA_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#define PRAGMA_DIAGNOSTIC_ERROR(X) DO_PRAGMA( GCC diagnostic error #X ) +#define PRAGMA_DIAGNOSTIC_WARNING(X) DO_PRAGMA( GCC diagnostic warning #X ) +#define PRAGMA_DIAGNOSTIC_IGNORED(X) DO_PRAGMA( GCC diagnostic ignored #X ) +#else +#define PRAGMA_DIAGNOSTIC_PUSH +#define PRAGMA_DIAGNOSTIC_POP +#define PRAGMA_DIAGNOSTIC_ERROR(X) +#define PRAGMA_DIAGNOSTIC_WARNING(X) +#define PRAGMA_DIAGNOSTIC_IGNORED(X) +#endif + #endif /* UTIL_MACROS_H */