Limit __attribute__ ((fallthrough)) to Clang >= 5.

With Clang 3.5, this fails and breaks gRPC's build:

third_party/boringssl/crypto/bio/fd.c:196:7: error: declaration does not declare anything [-Werror,-Wmissing-declarations]
      OPENSSL_FALLTHROUGH;
      ^~~~~~~~~~~~~~~~~~~
third_party/boringssl/crypto/bio/../internal.h:192:29: note: expanded from macro 'OPENSSL_FALLTHROUGH'

Clang 5, empirically, is happy, so limit this to Clang >= 5.

Change-Id: I82430b415955ec7d664abe3ffe024e6bb28346c2
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/37246
Commit-Queue: Adam Langley <agl@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/crypto/internal.h b/crypto/internal.h
index 3c682e8..4772ebe 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -188,7 +188,10 @@
 #elif defined(__GNUC__) && __GNUC__ >= 7 // gcc 7
 #define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough))
 #elif defined(__clang__)
-#if __has_attribute(fallthrough)
+#if __has_attribute(fallthrough) && __clang_major__ >= 5
+// Clang 3.5, at least, complains about "error: declaration does not declare
+// anything", possibily because we put a semicolon after this macro in
+// practice. Thus limit it to >= Clang 5, which does work.
 #define OPENSSL_FALLTHROUGH __attribute__ ((fallthrough))
 #else // clang versions that do not support fallthrough.
 #define OPENSSL_FALLTHROUGH