[ccan] [PATCH] compiler: Add PURE_FUNCTION
Cody P Schafer
dev at codyps.com
Tue Jun 3 11:30:36 EST 2014
Signed-off-by: Cody P Schafer <dev at codyps.com>
---
ccan/compiler/compiler.h | 14 ++++++++++++++
tools/configurator/configurator.c | 2 ++
2 files changed, 16 insertions(+)
diff --git a/ccan/compiler/compiler.h b/ccan/compiler/compiler.h
index 651b47c..4224564 100644
--- a/ccan/compiler/compiler.h
+++ b/ccan/compiler/compiler.h
@@ -75,6 +75,20 @@
#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
diff --git a/tools/configurator/configurator.c b/tools/configurator/configurator.c
index ed6acbf..5f1e2e5 100644
--- a/tools/configurator/configurator.c
+++ b/tools/configurator/configurator.c
@@ -79,6 +79,8 @@ static struct test tests[] = {
"static int __attribute__((cold)) func(int x) { return x; }" },
{ "HAVE_ATTRIBUTE_CONST", DEFINES_FUNC, NULL, NULL,
"static int __attribute__((const)) func(int x) { return x; }" },
+ { "HAVE_ATTRIBUTE_PURE", DEFINES_FUNC, NULL, NULL,
+ "static int __attribute__((pure)) func(int x) { return x; }" },
{ "HAVE_ATTRIBUTE_MAY_ALIAS", OUTSIDE_MAIN, NULL, NULL,
"typedef short __attribute__((__may_alias__)) short_a;" },
{ "HAVE_ATTRIBUTE_NORETURN", DEFINES_FUNC, NULL, NULL,
--
1.9.3
More information about the ccan
mailing list