Fix all warnings about switch-case fallthrough

Replace 'fallthrough intended' comments with a dedicated macro
that the compiler can see (or remove those comments when they don't
provide value).

Change-Id: Ib6361e15ff078378921c9e2b654bff63cf497f5f
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index fa5e2ee..1666ffc 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -43,6 +43,20 @@
 extern "C" {
 #endif
 
+#if defined(__clang__) && defined(__has_warning)
+#if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
+#define AOM_FALLTHROUGH_INTENDED [[clang::fallthrough]]  // NOLINT
+#endif
+#elif defined(__GNUC__) && __GNUC__ >= 7
+#define AOM_FALLTHROUGH_INTENDED [[gnu::fallthrough]]  // NOLINT
+#endif
+
+#ifndef AOM_FALLTHROUGH_INTENDED
+#define AOM_FALLTHROUGH_INTENDED \
+  do {                           \
+  } while (0)
+#endif
+
 #define CDEF_MAX_STRENGTHS 16
 
 #define REF_FRAMES_LOG2 3
@@ -998,6 +1012,7 @@
     switch (partition) {
       case PARTITION_SPLIT:
         if (bsize != BLOCK_8X8) break;
+        AOM_FALLTHROUGH_INTENDED;
       case PARTITION_NONE:
       case PARTITION_HORZ:
       case PARTITION_VERT:
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index ca081d6..fa39e46 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -3766,7 +3766,7 @@
                 (1 << GM_ALPHA_PREC_BITS),
             (gm->wmmat[5] >> GM_ALPHA_PREC_DIFF) - (1 << GM_ALPHA_PREC_BITS));
       }
-    // Fallthrough intended
+      AOM_FALLTHROUGH_INTENDED;
     case TRANSLATION:
       trans_bits = (gm->wmtype == TRANSLATION)
                        ? GM_ABS_TRANS_ONLY_BITS - !allow_hp
@@ -3782,7 +3782,7 @@
           (1 << trans_bits) + 1, SUBEXPFIN_K,
           (ref_gm->wmmat[1] >> trans_prec_diff),
           (gm->wmmat[1] >> trans_prec_diff));
-    // Fallthrough intended
+      AOM_FALLTHROUGH_INTENDED;
     case IDENTITY: break;
     default: assert(0);
   }
diff --git a/av1/encoder/global_motion.c b/av1/encoder/global_motion.c
index 58a29c3..53db5e8 100644
--- a/av1/encoder/global_motion.c
+++ b/av1/encoder/global_motion.c
@@ -110,11 +110,18 @@
 
 static void force_wmtype(WarpedMotionParams *wm, TransformationType wmtype) {
   switch (wmtype) {
-    case IDENTITY: wm->wmmat[0] = 0; wm->wmmat[1] = 0;
+    case IDENTITY:
+      wm->wmmat[0] = 0;
+      wm->wmmat[1] = 0;
+      AOM_FALLTHROUGH_INTENDED;
     case TRANSLATION:
       wm->wmmat[2] = 1 << WARPEDMODEL_PREC_BITS;
       wm->wmmat[3] = 0;
-    case ROTZOOM: wm->wmmat[4] = -wm->wmmat[3]; wm->wmmat[5] = wm->wmmat[2];
+      AOM_FALLTHROUGH_INTENDED;
+    case ROTZOOM:
+      wm->wmmat[4] = -wm->wmmat[3];
+      wm->wmmat[5] = wm->wmmat[2];
+      AOM_FALLTHROUGH_INTENDED;
     case AFFINE: wm->wmmat[6] = wm->wmmat[7] = 0; break;
     default: assert(0);
   }
diff --git a/av1/encoder/hybrid_fwd_txfm.c b/av1/encoder/hybrid_fwd_txfm.c
index 74bb439..0028edc 100644
--- a/av1/encoder/hybrid_fwd_txfm.c
+++ b/av1/encoder/hybrid_fwd_txfm.c
@@ -179,7 +179,6 @@
     case ADST_DCT:
     case DCT_ADST:
     case ADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_4x4(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     case FLIPADST_DCT:
@@ -187,7 +186,6 @@
     case FLIPADST_FLIPADST:
     case ADST_FLIPADST:
     case FLIPADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_4x4(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     // use the c version for anything including identity for now
@@ -198,7 +196,6 @@
     case V_FLIPADST:
     case H_FLIPADST:
     case IDTX:
-      // fallthrough intended
       av1_fwd_txfm2d_4x4_c(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     default: assert(0);
@@ -257,7 +254,6 @@
     case ADST_DCT:
     case DCT_ADST:
     case ADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_8x8(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     case FLIPADST_DCT:
@@ -265,7 +261,6 @@
     case FLIPADST_FLIPADST:
     case ADST_FLIPADST:
     case FLIPADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_8x8(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     // use the c version for anything including identity for now
@@ -276,7 +271,6 @@
     case V_FLIPADST:
     case H_FLIPADST:
     case IDTX:
-      // fallthrough intended
       av1_fwd_txfm2d_8x8_c(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     default: assert(0);
@@ -293,7 +287,6 @@
     case ADST_DCT:
     case DCT_ADST:
     case ADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_16x16(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     case FLIPADST_DCT:
@@ -301,7 +294,6 @@
     case FLIPADST_FLIPADST:
     case ADST_FLIPADST:
     case FLIPADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_16x16(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     // use the c version for anything including identity for now
@@ -312,7 +304,6 @@
     case V_FLIPADST:
     case H_FLIPADST:
     case IDTX:
-      // fallthrough intended
       av1_fwd_txfm2d_16x16_c(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     default: assert(0);
@@ -329,7 +320,6 @@
     case ADST_DCT:
     case DCT_ADST:
     case ADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_32x32(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     case FLIPADST_DCT:
@@ -337,7 +327,6 @@
     case FLIPADST_FLIPADST:
     case ADST_FLIPADST:
     case FLIPADST_ADST:
-      // fallthrough intended
       av1_fwd_txfm2d_32x32(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     // use the c version for anything including identity for now
@@ -348,7 +337,6 @@
     case V_FLIPADST:
     case H_FLIPADST:
     case IDTX:
-      // fallthrough intended
       av1_fwd_txfm2d_32x32_c(src_diff, dst_coeff, diff_stride, tx_type, bd);
       break;
     default: assert(0);