summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/compiler.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/include/compiler.h b/src/include/compiler.h
index f3f713000..771e0610b 100644
--- a/src/include/compiler.h
+++ b/src/include/compiler.h
@@ -537,6 +537,19 @@ int __debug_disable;
/** Declare a function to be always inline */
#define __always_inline __attribute__ (( always_inline ))
+/* Force all inline functions to not be instrumented
+ *
+ * This is required to cope with what seems to be a long-standing gcc
+ * bug, in which -finstrument-functions will cause instances of
+ * inlined functions to be reported as further calls to the
+ * *containing* function. This makes instrumentation very difficult
+ * to use.
+ *
+ * Work around this problem by adding the no_instrument_function
+ * attribute to all inlined functions.
+ */
+#define inline inline __attribute__ (( no_instrument_function ))
+
/**
* Shared data.
*