diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-04-19 15:44:36 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-04-19 15:50:45 -0400 |
commit | 75311e2f9aabd1e4775176e9adff5cd5f1fe42aa (patch) | |
tree | 11bc6596c2a06e1a5460b1e1628a0380398e0718 /src/prelude.h | |
parent | 0d8bf80364a23d9b90ab6c034625b60e4c566c61 (diff) | |
download | bfs-75311e2f9aabd1e4775176e9adff5cd5f1fe42aa.tar.xz |
config: Check for max_align_t
Diffstat (limited to 'src/prelude.h')
-rw-r--r-- | src/prelude.h | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/prelude.h b/src/prelude.h index a23b167..390666b 100644 --- a/src/prelude.h +++ b/src/prelude.h @@ -182,14 +182,25 @@ extern const char bfs_version[]; #endif /** + * Polyfill max_align_t if we don't already have it. + */ +#if !BFS_HAS_MAX_ALIGN_T +typedef union { +# ifdef __BIGGEST_ALIGNMENT__ + alignas(__BIGGEST_ALIGNMENT__) char c; +# else + long double ld; + long long ll; + void *ptr; +# endif +} max_align_t; +#endif + +/** * Alignment specifier that avoids false sharing. */ #define cache_align alignas(FALSE_SHARING_SIZE) -#if __COSMOPOLITAN__ -typedef long double max_align_t; -#endif - // Wrappers for attributes /** |