1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-23 09:57:40 +03:00

lib/ccan/compiler, ilog: IDEMPOTENT "idempotent does not mean what you think it means"

Actually, I don't even think it means that.  But rename it to something
which is sane.

Thanks to David Gibson for reporting.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(Imported from CCAN commit e764d0a27d2b6748ea7d343042ec7d6dda1f6aae)
This commit is contained in:
Rusty Russell 2011-12-05 16:42:50 +10:30
parent ab2c07b8f0
commit 3b390b754e
3 changed files with 10 additions and 10 deletions

View File

@ -10,7 +10,7 @@
* For functions not called in fast paths (aka. cold functions)
* - PRINTF_FMT
* For functions which take printf-style parameters.
* - IDEMPOTENT
* - CONST_FUNCTION
* For functions which return the same value for same parameters.
* - NEEDED
* For functions and variables which must be emitted even if unused.
@ -18,7 +18,7 @@
* For functions and variables which need not be emitted if unused.
* - UNUSED
* For parameters which are not used.
* - IS_COMPILE_CONSTANT
* - IS_COMPILE_CONSTANT()
* For using different tradeoffs for compiletime vs runtime evaluation.
*
* License: Public Domain

View File

@ -61,18 +61,18 @@
#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
#endif

View File

@ -25,7 +25,7 @@
* return 1U << ilog32(i-1);
* }
*/
int ilog32(uint32_t _v) IDEMPOTENT;
int ilog32(uint32_t _v) CONST_FUNCTION;
/**
* ilog32_nz - Integer binary logarithm of a non-zero 32-bit value.
@ -44,7 +44,7 @@ int ilog32(uint32_t _v) IDEMPOTENT;
* return ilog32_nz(i) - 1;
* }
*/
int ilog32_nz(uint32_t _v) IDEMPOTENT;
int ilog32_nz(uint32_t _v) CONST_FUNCTION;
/**
* ilog64 - Integer binary logarithm of a 64-bit value.
@ -56,7 +56,7 @@ int ilog32_nz(uint32_t _v) IDEMPOTENT;
* See Also:
* ilog64_nz(), ilog32()
*/
int ilog64(uint64_t _v) IDEMPOTENT;
int ilog64(uint64_t _v) CONST_FUNCTION;
/**
* ilog64_nz - Integer binary logarithm of a non-zero 64-bit value.
@ -68,7 +68,7 @@ int ilog64(uint64_t _v) IDEMPOTENT;
* See Also:
* ilog64(), ilog32_nz()
*/
int ilog64_nz(uint64_t _v) IDEMPOTENT;
int ilog64_nz(uint64_t _v) CONST_FUNCTION;
/**
* STATIC_ILOG_32 - The integer logarithm of an (unsigned, 32-bit) constant.