[glib] macros: add G_GNUC_NO_INLINE function attribute
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] macros: add G_GNUC_NO_INLINE function attribute
- Date: Wed, 9 May 2018 11:33:07 +0000 (UTC)
commit ede5c3f8d96008f63e2fcd3448fc88edd909d936
Author: Christian Hergert <chergert redhat com>
Date: Fri Apr 13 18:34:30 2018 -0700
macros: add G_GNUC_NO_INLINE function attribute
https://bugzilla.gnome.org/show_bug.cgi?id=795180
docs/reference/glib/glib-sections.txt | 1 +
glib/docs.c | 19 +++++++++++++++++++
glib/gmacros.h | 2 ++
3 files changed, 22 insertions(+)
---
diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt
index f4b8dba54..32a7664e8 100644
--- a/docs/reference/glib/glib-sections.txt
+++ b/docs/reference/glib/glib-sections.txt
@@ -445,6 +445,7 @@ G_GNUC_NULL_TERMINATED
G_GNUC_WARN_UNUSED_RESULT
G_GNUC_FUNCTION
G_GNUC_PRETTY_FUNCTION
+G_GNUC_NO_INLINE
G_GNUC_NO_INSTRUMENT
G_HAVE_GNUC_VISIBILITY
G_GNUC_INTERNAL
diff --git a/glib/docs.c b/glib/docs.c
index 4b1d97c2b..a67bc3411 100644
--- a/glib/docs.c
+++ b/glib/docs.c
@@ -2048,6 +2048,25 @@
* See the GNU C documentation for more details.
*/
+/**
+ * G_GNUC_NO_INLINE:
+ *
+ * Expands to the GNU C `noinline` function attribute if the compiler is gcc.
+ * If the compiler is not gcc, this macro expands to nothing.
+ *
+ * Declaring a function as `noinline` prevents the function from being
+ * considered for inlining.
+ *
+ * The attribute may be placed before the declaration, right before the
+ * `static` keyword.
+ *
+ * See the
+ * [GNU C
documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-noinline-function-attribute)
+ * for more details.
+ *
+ * Since: 2.58
+ */
+
/**
* G_GNUC_MALLOC:
*
diff --git a/glib/gmacros.h b/glib/gmacros.h
index 617e79a2d..55fb81e5b 100644
--- a/glib/gmacros.h
+++ b/glib/gmacros.h
@@ -97,9 +97,11 @@
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
#define G_GNUC_PURE __attribute__((__pure__))
#define G_GNUC_MALLOC __attribute__((__malloc__))
+#define G_GNUC_NO_INLINE __attribute__((noinline))
#else
#define G_GNUC_PURE
#define G_GNUC_MALLOC
+#define G_GNUC_NO_INLINE
#endif
#if __GNUC__ >= 4
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]