Browse Source

ptrint: ptr2int and int2ptr are constant functions

By construction these functions depend only on their arguments, so declare
them as CONST_FUNCTION using the helper from ccan/compiler.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson 10 years ago
parent
commit
14addbab47
2 changed files with 4 additions and 2 deletions
  1. 1 0
      ccan/ptrint/_info
  2. 3 2
      ccan/ptrint/ptrint.h

+ 1 - 0
ccan/ptrint/_info

@@ -48,6 +48,7 @@ int main(int argc, char *argv[])
 
 	if (strcmp(argv[1], "depends") == 0) {
 		printf("ccan/build_assert\n");
+		printf("ccan/compiler\n");
 		return 0;
 	}
 	if (strcmp(argv[1], "testdepends") == 0) {

+ 3 - 2
ccan/ptrint/ptrint.h

@@ -7,6 +7,7 @@
 #include <stddef.h>
 
 #include <ccan/build_assert/build_assert.h>
+#include <ccan/compiler/compiler.h>
 
 /*
  * This is a deliberately incomplete type, because it should never be
@@ -15,7 +16,7 @@
  */
 typedef struct ptrint ptrint_t;
 
-static inline ptrdiff_t ptr2int(const ptrint_t *p)
+CONST_FUNCTION static inline ptrdiff_t ptr2int(const ptrint_t *p)
 {
 	/*
 	 * ptrdiff_t is the right size by definition, but to avoid
@@ -26,7 +27,7 @@ static inline ptrdiff_t ptr2int(const ptrint_t *p)
 	return (const char *)p - (const char *)NULL;
 }
 
-static inline ptrint_t *int2ptr(ptrdiff_t i)
+CONST_FUNCTION static inline ptrint_t *int2ptr(ptrdiff_t i)
 {
 	return (ptrint_t *)((char *)NULL + i);
 }