Try to suppress warnings with FALLTHROUGH_INTENDED.

Change-Id: I8694331547666c70873487c15d8bbac6cf88a75e
Reviewed-on: https://code-review.googlesource.com/24790
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/util/util.h b/util/util.h
index a69d842..64a3e0e 100644
--- a/util/util.h
+++ b/util/util.h
@@ -12,7 +12,13 @@
 #define arraysize(array) (int)(sizeof(array)/sizeof((array)[0]))
 
 #ifndef FALLTHROUGH_INTENDED
-#define FALLTHROUGH_INTENDED do { } while (0)
+#if defined(__clang__)
+#define FALLTHROUGH_INTENDED [[clang::fallthrough]]
+#elif defined(__GNUC__)
+#define FALLTHROUGH_INTENDED [[gnu::fallthrough]]
+#else
+#define FALLTHROUGH_INTENDED do {} while (0)
+#endif
 #endif
 
 #ifndef NO_THREAD_SAFETY_ANALYSIS