X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fcompiler%2Fcompiler.h;h=bce4f25a122612d7f26f8e846564747a01836b3b;hb=55d814230f7fb628bb5303cd53498209c7928040;hp=651b47cee9dcd611ad7c8513d92ec06ba852bb63;hpb=516c47790828cfb892fecdbe03a6928c345d29b2;p=ccan diff --git a/ccan/compiler/compiler.h b/ccan/compiler/compiler.h index 651b47ce..bce4f25a 100644 --- a/ccan/compiler/compiler.h +++ b/ccan/compiler/compiler.h @@ -17,7 +17,7 @@ * fprintf(stderr, "Error: %s (%s)\n", reason, strerror(errno)); * } */ -#define COLD __attribute__((cold)) +#define COLD __attribute__((__cold__)) #else #define COLD #endif @@ -37,7 +37,7 @@ * exit(1); * } */ -#define NORETURN __attribute__((noreturn)) +#define NORETURN __attribute__((__noreturn__)) #else #define NORETURN #endif @@ -71,10 +71,24 @@ * same value for the exact same arguments. This implies that the function * must not use global variables, or dereference pointer arguments. */ -#define CONST_FUNCTION __attribute__((const)) +#define CONST_FUNCTION __attribute__((__const__)) #else #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 #if HAVE_ATTRIBUTE_UNUSED @@ -95,7 +109,7 @@ * counter += add; * } */ -#define UNNEEDED __attribute__((unused)) +#define UNNEEDED __attribute__((__unused__)) #endif #ifndef NEEDED @@ -114,10 +128,10 @@ * printf("Counter is %i\n", counter); * } */ -#define NEEDED __attribute__((used)) +#define NEEDED __attribute__((__used__)) #else /* Before used, unused functions and vars were always emitted. */ -#define NEEDED __attribute__((unused)) +#define NEEDED __attribute__((__unused__)) #endif #endif @@ -136,7 +150,7 @@ * return 0; * } */ -#define UNUSED __attribute__((unused)) +#define UNUSED __attribute__((__unused__)) #endif #else #ifndef UNNEEDED @@ -209,7 +223,7 @@ * return realloc(buf, (*size) *= 2); * } */ -#define WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#define WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) #else #define WARN_UNUSED_RESULT #endif