diff --git a/glib/gtypes.h b/glib/gtypes.h
index 56cc648..2db6963 100644
--- a/glib/gtypes.h
+++ b/glib/gtypes.h
@@ -158,17 +158,21 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
  */
 #if defined (__GNUC__) && (__GNUC__ >= 2) && defined (__OPTIMIZE__)
 #  if defined (__i386__)
-#    define GUINT16_SWAP_LE_BE_IA32(val) \
-       (__extension__						\
-	({ register guint16 __v, __x = ((guint16) (val));	\
-	   if (__builtin_constant_p (__x))			\
-	     __v = GUINT16_SWAP_LE_BE_CONSTANT (__x);		\
-	   else							\
-	     __asm__ ("rorw $8, %w0"				\
-		      : "=r" (__v)				\
-		      : "0" (__x)				\
-		      : "cc");					\
-	    __v; }))
+#    define GUINT16_SWAP_LE_BE_IA32 GUINT16_SWAP_LE_BE_IA32
+static inline guint16
+GUINT16_SWAP_LE_BE_IA32(guint16 val)
+{
+  register guint16 __v;
+  if (__builtin_constant_p (val))
+    __v = GUINT16_SWAP_LE_BE_CONSTANT (val);
+  else
+    __asm__ ("rorw $8, %w0"
+	     : "=r" (__v)
+	     : "0" (val)
+	     : "cc");
+  
+  return __v;
+}
 #    if !defined (__i486__) && !defined (__i586__) \
 	&& !defined (__pentium__) && !defined (__i686__) \
 	&& !defined (__pentiumpro__) && !defined (__pentium4__)
