X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=compiler%2Fcompiler.h;h=4d92ac4949c4a5111df6ae5ba0fd36325281be49;hb=c473a9bd8fadf0b8e7521edcabb2204d87f35b04;hp=40e857c004c6e4304565ad1e446b4bffaf90eb35;hpb=029716a2f67245a6aad59cf8b52261fa39c8a07f;p=fio.git diff --git a/compiler/compiler.h b/compiler/compiler.h index 40e857c0..4d92ac49 100644 --- a/compiler/compiler.h +++ b/compiler/compiler.h @@ -1,6 +1,7 @@ #ifndef FIO_COMPILER_H #define FIO_COMPILER_H +/* IWYU pragma: begin_exports */ #if __GNUC__ >= 4 #include "compiler-gcc4.h" #elif __GNUC__ == 3 @@ -8,6 +9,7 @@ #else #error Compiler too old, need gcc at least gcc 3.x #endif +/* IWYU pragma: end_exports */ #ifndef __must_check #define __must_check @@ -33,9 +35,16 @@ 1; \ }) + +#if defined(CONFIG_STATIC_ASSERT) +#define compiletime_assert(condition, msg) _Static_assert(condition, msg) + +#elif !defined(CONFIG_DISABLE_OPTIMIZATIONS) + #ifndef __compiletime_error #define __compiletime_error(message) #endif + #ifndef __compiletime_error_fallback #define __compiletime_error_fallback(condition) do { } while (0) #endif @@ -55,4 +64,15 @@ #define compiletime_assert(condition, msg) \ _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) +#else + +#define compiletime_assert(condition, msg) do { } while (0) + +#endif + +#ifdef FIO_INTERNAL +#define ARRAY_SIZE(x) (sizeof((x)) / (sizeof((x)[0]))) +#define FIELD_SIZE(s, f) (sizeof(((typeof(s))0)->f)) +#endif + #endif