From e8035f141e1f71d739fa5cfc9c01531cdee6fc16 Mon Sep 17 00:00:00 2001 From: Evan Miller Date: Fri, 14 Jul 2023 14:55:56 -0400 Subject: [PATCH] ggml : fix static_assert with older compilers #2024 (#2218) --- ggml.c | 10 ++++++---- k_quants.h | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ggml.c b/ggml.c index f5821f1f1..3ea8ba6ec 100644 --- a/ggml.c +++ b/ggml.c @@ -31,11 +31,17 @@ #include #endif +// static_assert should be a #define, but if it's not, +// fall back to the _Static_assert C11 keyword. // if C99 - static_assert is noop // ref: https://stackoverflow.com/a/53923785/4039976 #ifndef static_assert +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201100L) +#define static_assert(cond, msg) _Static_assert(cond, msg) +#else #define static_assert(cond, msg) struct global_scope_noop_trick #endif +#endif #if defined(_MSC_VER) // disable "possible loss of data" to avoid hundreds of casts @@ -112,10 +118,6 @@ typedef void * thread_ret_t; #endif #endif -#ifdef __HAIKU__ -#define static_assert(cond, msg) _Static_assert(cond, msg) -#endif - /*#define GGML_PERF*/ #define GGML_DEBUG 0 #define GGML_GELU_FP16 diff --git a/k_quants.h b/k_quants.h index 6abe3d7b8..adc6a3913 100644 --- a/k_quants.h +++ b/k_quants.h @@ -15,6 +15,14 @@ #define K_SCALE_SIZE 12 #endif +#ifndef static_assert +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201100L) +#define static_assert(cond, msg) _Static_assert(cond, msg) +#else +#define static_assert(cond, msg) struct global_scope_noop_trick +#endif +#endif + // // Super-block quantization structures //