X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fcompiler%2Fcompiler.h;h=42245646c42ff772bcc6376ffc54ac79a1c1aca1;hb=48c1824304ac2d8aeaef7b8a55c7d9edc8992f63;hp=74e0f1835c1207454aa1fdb364d3573df31387d1;hpb=e37b906781eeddb89d2ba6c5c39e9d20e4111c18;p=ccan diff --git a/ccan/compiler/compiler.h b/ccan/compiler/compiler.h index 74e0f183..42245646 100644 --- a/ccan/compiler/compiler.h +++ b/ccan/compiler/compiler.h @@ -1,3 +1,4 @@ +/* CC0 (Public domain) - see LICENSE file for details */ #ifndef CCAN_COMPILER_H #define CCAN_COMPILER_H #include "config.h" @@ -61,18 +62,32 @@ #endif #endif -#ifndef IDEMPOTENT +#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 + +#ifndef PURE_FUNCTION +#if HAVE_ATTRIBUTE_PURE +/** + * PURE_FUNCTION - a function is pure + * + * A pure function is one that has no side effects other than it's return value + * and uses no inputs other than it's arguments and global variables. + */ +#define PURE_FUNCTION __attribute__((__pure__)) +#else +#define PURE_FUNCTION +#endif #endif #endif