chiark / gitweb /
[PATCH] update klibc to version .107
[elogind.git] / klibc / klibc / include / klibc / compiler.h
index 64b8c541588be772f0d6eebdbb1de9ca3598b43c..49872b89d4c2484ff4addb0cc5c6acff6c242dcf 100644 (file)
 # define __unusedfunc
 #endif
 
+/* "pure" function:
+
+     Many functions have no effects except the return value and their
+     return value depends only on the parameters and/or global
+     variables.  Such a function can be subject to common subexpression
+     elimination and loop optimization just as an arithmetic operator
+     would be.  These functions should be declared with the attribute
+     `pure'.
+*/
+#ifdef __GNUC__
+# define __attribute_pure__    __attribute__((pure))
+#else
+# define __attribute_pure__
+#endif
+
+/* "const" function:
+
+     Many functions do not examine any values except their arguments,
+     and have no effects except the return value.  Basically this is
+     just slightly more strict class than the `pure' attribute above,
+     since function is not allowed to read global memory.
+
+     Note that a function that has pointer arguments and examines the
+     data pointed to must _not_ be declared `const'.  Likewise, a
+     function that calls a non-`const' function usually must not be
+     `const'.  It does not make sense for a `const' function to return
+     `void'.
+*/
+#ifdef __GNUC__
+# define __attribute_const__   __attribute__((const))
+#else
+# define __attribute_const__
+#endif
+
 #endif