compiler, ilog: IDEMPOTENT "idempotent does not mean what you think it means"
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 26 Oct 2011 06:26:22 +0000 (16:56 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 26 Oct 2011 06:26:22 +0000 (16:56 +1030)
Actually, I don't even think it means that.  But rename it to something
which is sane.

Thanks to David Gibson for reporting.

ccan/compiler/_info
ccan/compiler/compiler.h
ccan/ilog/ilog.h

index e42ebb0fb358114747405477d2fcc801727023c4..9f3945397386cc7ff058c1529143671dbf259be5 100644 (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
index 74e0f1835c1207454aa1fdb364d3573df31387d1..fcb89c8f2a68a9aa90f5cba4746a98910c0a551d 100644 (file)
 #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
 
index 1a471c2d347719febfaf735a8330919ebf99155e..e52f04233c7fe16516412f8f0feb57ffe5bc7ede 100644 (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.