diff options
Diffstat (limited to 'lib/compiler.h')
-rw-r--r-- | lib/compiler.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/compiler.h b/lib/compiler.h index 474adc7c8..c2e57db7f 100644 --- a/lib/compiler.h +++ b/lib/compiler.h @@ -76,6 +76,15 @@ extern "C" { #define _DEPRECATED(x) deprecated #endif +/* pure = function does not modify memory & return value is the same if + * memory hasn't changed (=> allows compiler to optimize) + * + * Mostly autodetected by the compiler if function body is available (i.e. + * static inline functions in headers). Since that implies it should only be + * used in headers for non-inline functions, the "extern" is included here. + */ +#define ext_pure extern __attribute__((pure)) + /* for helper functions defined inside macros */ #define macro_inline static inline __attribute__((unused)) #define macro_pure static inline __attribute__((unused, pure)) |