+/* CC0 (Public domain) - see LICENSE file for details */
#ifndef CCAN_COMPILER_H
#define CCAN_COMPILER_H
#include "config.h"
+#ifndef COLD
#if HAVE_ATTRIBUTE_COLD
/**
* COLD - a function is unlikely to be called.
#else
#define COLD
#endif
+#endif
+#ifndef NORETURN
#if HAVE_ATTRIBUTE_NORETURN
/**
* NORETURN - a function does not return
#else
#define NORETURN
#endif
+#endif
+#ifndef PRINTF_FMT
#if HAVE_ATTRIBUTE_PRINTF
/**
* PRINTF_FMT - a function takes printf-style arguments
#else
#define PRINTF_FMT(nfmt, narg)
#endif
+#endif
+#ifndef CONST_FUNCTION
#if HAVE_ATTRIBUTE_CONST
/**
- * IDEMPOTENT - a function's return depends only on its argument
+ * CONST_FUNCTION - a function's return depends only on its argument
*
* This allows the compiler to assume that the function will return the exact
* same value for the exact same arguments. This implies that the function
* must not use global variables, or dereference pointer arguments.
*/
-#define IDEMPOTENT __attribute__((const))
+#define CONST_FUNCTION __attribute__((const))
#else
-#define IDEMPOTENT
+#define CONST_FUNCTION
+#endif
#endif
#if HAVE_ATTRIBUTE_UNUSED
+#ifndef UNNEEDED
/**
* UNNEEDED - a variable/function may not be needed
*
* }
*/
#define UNNEEDED __attribute__((unused))
+#endif
+#ifndef NEEDED
#if HAVE_ATTRIBUTE_USED
/**
* NEEDED - a variable/function is needed
/* Before used, unused functions and vars were always emitted. */
#define NEEDED __attribute__((unused))
#endif
+#endif
+#ifndef UNUSED
/**
* UNUSED - a parameter is unused
*
* }
*/
#define UNUSED __attribute__((unused))
+#endif
#else
+#ifndef UNNEEDED
#define UNNEEDED
+#endif
+#ifndef NEEDED
#define NEEDED
+#endif
+#ifndef UNUSED
#define UNUSED
#endif
+#endif
+#ifndef IS_COMPILE_CONSTANT
#if HAVE_BUILTIN_CONSTANT_P
/**
* IS_COMPILE_CONSTANT - does the compiler know the value of this expression?
/* If we don't know, assume it's not. */
#define IS_COMPILE_CONSTANT(expr) 0
#endif
+#endif
+#ifndef WARN_UNUSED_RESULT
#if HAVE_WARN_UNUSED_RESULT
/**
* WARN_UNUSED_RESULT - warn if a function return value is unused.
#else
#define WARN_UNUSED_RESULT
#endif
+#endif
#endif /* CCAN_COMPILER_H */