Only use <nowiki>__builtin_bswap16()</nowiki> with GCC 4.8 and later.
FossilOrigin-Name: ce8177e3e64d2ac4cd5d9e7757cdd5fcecd7d0ea
diff --git a/src/btreeInt.h b/src/btreeInt.h
index 1ccdb08..7411784 100644
--- a/src/btreeInt.h
+++ b/src/btreeInt.h
@@ -699,7 +699,7 @@
*/
#if SQLITE_BYTEORDER==4321
# define get2byteAligned(x) (*(u16*)(x))
-#elif SQLITE_BYTEORDER==1234 && defined(__GNUC__)
+#elif SQLITE_BYTEORDER==1234 && GCC_VERSION>=4008000
# define get2byteAligned(x) __builtin_bswap16(*(u16*)(x))
#else
# define get2byteAligned(x) ((x)[0]<<8 | (x)[1])
diff --git a/src/sqliteInt.h b/src/sqliteInt.h
index aed6557..9074348 100644
--- a/src/sqliteInt.h
+++ b/src/sqliteInt.h
@@ -60,6 +60,13 @@
# define _LARGEFILE_SOURCE 1
#endif
+/* What version of GCC is being used. 0 means GCC is not being used */
+#ifdef __GNUC__
+# define GCC_VERSION (__GNUC__*1000000+__GNUC_MINOR__*1000+__GNUC_PATCHLEVEL__)
+#else
+# define GCC_VERSION 0
+#endif
+
/* Needed for various definitions... */
#if defined(__GNUC__) && !defined(_GNU_SOURCE)
# define _GNU_SOURCE