# 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 _format_attribute(type, format_str, format_start)
#endif
+#ifndef noinline
+# define noinline
+#endif
+
+/* Same as 'noinline', but 'noinline_for_stack' documents that 'noinline' is
+ * being used to prevent the annotated function from being inlined into a
+ * recursive function and increasing its stack usage. */
+#define noinline_for_stack noinline
+
#ifndef CPU_IS_BIG_ENDIAN
-# error "missing required definition of CPU_IS_BIG_ENDIAN"
+# error "missing required endianness definition"
#endif
#define CPU_IS_LITTLE_ENDIAN (!CPU_IS_BIG_ENDIAN)
# 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
#endif /* _WIMLIB_COMPILER_H */