diff --git a/configure.ac b/configure.ac
index dae619e7..3ed4e7fe 100644
--- a/configure.ac
+++ b/configure.ac
@@ -67,6 +67,7 @@ AC_CHECK_HEADERS([stdint.h inttypes.h byteswap.h sys/param.h termios.h x86intrin
 AC_HEADER_TIOCGWINSZ
 
 XIPH_C_BSWAP32
+XIPH_C_BSWAP16
 
 ac_cv_c_big_endian=0
 ac_cv_c_little_endian=0
diff --git a/include/share/endswap.h b/include/share/endswap.h
index 86bf8572..dece49ca 100644
--- a/include/share/endswap.h
+++ b/include/share/endswap.h
@@ -34,7 +34,7 @@
 #if HAVE_BSWAP32			/* GCC and Clang */
 
 /* GCC prior to 4.8 didn't provide bswap16 on x86_64 */
-#if __GNUC__ <= 4 && __GNUC_MINOR__ < 8
+#ifndef HAVE_BSWAP16
 static inline unsigned short __builtin_bswap16(unsigned short a)
 {
 	return (a<<8)|(a>>8);