From 8013b215cdcc5d3bd77083a3c8427418e27f396e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 11 Jun 2008 07:37:45 +0000 Subject: [PATCH] =?utf8?q?Bug=20531900=20=E2=80=93=20Use=20=5F=5Fbuiltin?= =?utf8?q?=5Foffsetof=20for=20G=5FSTRUCT=5FOFFSET=20if=20building=20with?= =?utf8?q?=20gcc=204.0=20or=20newer=20*=20glib/gmacros.h:=20Use=20=5F=5Fbu?= =?utf8?q?iltin=5Foffsetof=20for=20G=5FSTRUCT=5FOFFSET=20if=20building=20w?= =?utf8?q?ith=20gcc=204.0=20or=20newer.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=6996 --- ChangeLog | 8 ++++++++ glib/gmacros.h | 11 +++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 752ee8ed..6ea1d9ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-06-11 Sebastian Dröge + + Bug 531900 – Use __builtin_offsetof for G_STRUCT_OFFSET if building + with gcc 4.0 or newer + + * glib/gmacros.h: Use __builtin_offsetof for G_STRUCT_OFFSET if + building with gcc 4.0 or newer. + 2008-06-11 Tor Lillqvist * glib/gmain.c diff --git a/glib/gmacros.h b/glib/gmacros.h index 395363d7..63174089 100644 --- a/glib/gmacros.h +++ b/glib/gmacros.h @@ -209,8 +209,15 @@ /* Provide convenience macros for handling structure * fields through their offsets. */ -#define G_STRUCT_OFFSET(struct_type, member) \ - ((glong) ((guint8*) &((struct_type*) 0)->member)) + +#if defined(__GNUC__) && __GNUC__ >= 4 +# define G_STRUCT_OFFSET(struct_type, member) \ + ((glong) __builtin_offsetof (struct_type, member)) +#else +# define G_STRUCT_OFFSET(struct_type, member) \ + ((glong) ((guint8*) &((struct_type*) 0)->member)) +#endif + #define G_STRUCT_MEMBER_P(struct_p, struct_offset) \ ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset))) #define G_STRUCT_MEMBER(member_type, struct_p, struct_offset) \ -- 2.34.1