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