folly: support FOLLY_FALLTHROUGH on GCC
authorPádraig Brady <pbrady@fb.com>
Sat, 18 Nov 2017 22:25:54 +0000 (14:25 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Sat, 18 Nov 2017 22:35:40 +0000 (14:35 -0800)
Summary:
This is required to avoid new GCC 7 -Wimplict-fallthrough warnings.
We also update to use the C++17 [[fallthrough]] attribute if supported.

Reviewed By: yfeldblum

Differential Revision: D6367140

fbshipit-source-id: d5380983cb300f944df9c2885d0faa0155994be7

folly/CppAttributes.h

index 466aab91a81144527e968415207f666674d52d46..2ebbae8cff35a164d3f778da3db64da12c91ead9 100644 (file)
  *     FOLLY_FALLTHROUGH; // no warning: annotated fall-through
  * }
  */
  *     FOLLY_FALLTHROUGH; // no warning: annotated fall-through
  * }
  */
-#if FOLLY_HAS_CPP_ATTRIBUTE(clang::fallthrough)
+#if FOLLY_HAS_CPP_ATTRIBUTE(fallthrough)
+#define FOLLY_FALLTHROUGH [[fallthrough]]
+#elif FOLLY_HAS_CPP_ATTRIBUTE(clang::fallthrough)
 #define FOLLY_FALLTHROUGH [[clang::fallthrough]]
 #define FOLLY_FALLTHROUGH [[clang::fallthrough]]
+#elif FOLLY_HAS_CPP_ATTRIBUTE(gnu::fallthrough)
+#define FOLLY_FALLTHROUGH [[gnu::fallthrough]]
 #else
 #define FOLLY_FALLTHROUGH
 #endif
 #else
 #define FOLLY_FALLTHROUGH
 #endif