# define unlikely(expr) (expr)
#endif
-#ifndef prefetch
-# define prefetch(addr)
+/* prefetchr() - prefetch into L1 cache for read */
+#ifndef prefetchr
+# define prefetchr(addr)
+#endif
+
+/* prefetchw() - prefetch into L1 cache for write */
+#ifndef prefetchw
+# define prefetchw(addr)
#endif
#ifndef _cold_attribute
# define _force_attr
#endif
-#ifndef BUILD_BUG_ON
-# define BUILD_BUG_ON(expr) ((void)sizeof(char[1 - 2*!!(expr)]))
+/* STATIC_ASSERT() - verify the truth of an expression at compilation time. */
+#if __STDC_VERSION__ >= 201112L
+# define STATIC_ASSERT(expr) _Static_assert((expr), "")
+#else
+# define STATIC_ASSERT(expr) ((void)sizeof(char[1 - 2 * !(expr)]))
#endif
+#define CONCAT_IMPL(s1, s2) s1##s2
+
+/* CONCAT() - concatenate two tokens at preprocessing time. */
+#define CONCAT(s1, s2) CONCAT_IMPL(s1, s2)
+
#endif /* _WIMLIB_COMPILER_H */