2016-07-11  Marek Polacek  <pola...@redhat.com>

        PR c/7652
        * config/alpha/alpha.c (alpha_rtx_costs): Likewise.
        (alpha_legitimate_constant_p): Likewise.
        (alpha_emit_setcc): Likewise.
        (alpha_emit_xfloating_libcall): Likewise.
        (alpha_function_value_1): Likewise.
        (alpha_fold_builtin): Likewise.
        * config/alpha/predicates.md: Likewise.
        * config/arc/arc.c (arc_init): Likewise.
        (arc_print_operand): Likewise.
        (arc_rtx_costs): Likewise.
        (arc_legitimate_constant_p): Likewise.
        (arc_get_insn_variants): Likewise.
        (arc_ifcvt): Likewise.
        (arc_expand_atomic_op): Likewise.
        * config/arc/predicates.md: Likewise.
        * config/avr/avr-log.c (avr_log_vadump): Likewise.
        * config/avr/avr.c (ashrqi3_out): Likewise.
        (ashrhi3_out): Likewise.
        (avr_out_ashrpsi3): Likewise.
        (ashrsi3_out): Likewise.
        (avr_out_lshrpsi3): Likewise.
        (avr_rtx_costs_1): Likewise.
        * config/bfin/bfin.c (print_operand): Likewise.
        (bfin_rtx_costs): Likewise.
        * config/c6x/c6x.c (c6x_expand_compare): Likewise.
        (c6x_mem_operand): Likewise.
        (c6x_legitimate_address_p_1): Likewise.
        (count_unit_reqs): Likewise.
        (c6x_registers_update): Likewise.
        * config/c6x/c6x.h: Likewise.
        * config/c6x/predicates.md: Likewise.
        * config/cr16/cr16.c (cr16_address_cost): Likewise.
        (cr16_print_operand_address): Likewise.
        * config/cris/cris.c (cris_print_operand): Likewise.
        (cris_rtx_costs): Likewise.
        * config/epiphany/epiphany.c (epiphany_rtx_costs): Likewise.
        (epiphany_address_cost): Likewise.
        (epiphany_print_operand): Likewise.
        (epiphany_mode_needed): Likewise.
        (epiphany_mode_entry_exit): Likewise.
        (epiphany_insert_mode_switch_use): Likewise.
        * config/fr30/fr30.c (fr30_print_operand): Likewise.
        * config/frv/frv.c (frv_print_operand): Likewise.
        (frv_legitimate_address_p_1): Likewise.
        (frv_emit_movsi): Likewise.
        (frv_rtx_costs): Likewise.
        * config/h8300/h8300.c (h8300_print_operand): Likewise.
        (get_shift_alg): Likewise.
        (output_a_shift): Likewise.
        (compute_a_shift_length): Likewise.
        (compute_a_shift_cc): Likewise.
        * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
        (ia64_expand_atomic_op): Likewise.
        (ia64_print_operand): Likewise.
        (ia64_rtx_costs): Likewise.
        (group_barrier_needed): Likewise.
        (ia64_expand_vec_perm_const): Likewise.
        * config/ia64/predicates.md: Likewise.
        * config/iq2000/iq2000.c (iq2000_address_cost): Likewise.
        * config/lm32/lm32.c (lm32_rtx_costs): Likewise.
        * config/m32r/m32r.c (m32r_rtx_costs): Likewise.
        (m32r_print_operand): Likewise.
        * config/m68k/m68k.c (m68k_sched_md_init_global): Likewise.
        * config/m68k/m68k.h: Likewise.
        * config/mips/mips.c (mips_symbolic_constant_p): Likewise.
        (mips_symbol_insns_1): Likewise.
        (mips_const_insns): Likewise.
        (mips_set_reg_reg_cost): Likewise.
        (mips_rtx_costs): Likewise.
        (mips_output_order_conditional_branch): Likewise.
        (mips_expand_vec_perm_const): Likewise.
        * config/mmix/predicates.md: Likewise.
        * config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
        (mn10300_rtx_costs): Likewise.
        (extract_bundle): Likewise.
        * config/mn10300/mn10300.md: Likewise.
        * config/msp430/msp430.c (msp430_initial_elimination_offset): Likewise.
        (msp430_print_operand): Likewise.
        * config/nds32/nds32-cost.c: Likewise.
        * config/nios2/nios2.c (nios2_legitimate_address_p): Likewise.
        (nios2_print_operand): Likewise.
        * config/pa/pa.c (hppa_rtx_costs): Likewise.
        * config/pdp11/pdp11.c (pdp11_rtx_costs): Likewise.
        * config/rl78/rl78-real.md: Likewise.
        * config/rl78/rl78.c (characterize_address): Likewise.
        (rl78_initial_elimination_offset): Likewise.
        * config/rx/rx.c (rx_print_operand_address): Likewise.
        (rx_print_operand): Likewise.
        (rx_option_override): Likewise.
        * config/s390/s390.c (s390_select_ccmode): Likewise.
        (s390_expand_atomic): Likewise.
        * config/sh/sh.c (sh_print_operand): Likewise.
        (output_branch): Likewise.
        (sh_rtx_costs): Likewise.
        * config/sh/sh.md: Likewise.
        * config/sparc/sparc.c (sparc_rtx_costs): Likewise.
        (sparc_emit_membar_for_model): Likewise.
        * config/spu/spu.c (classify_immediate): Likewise.
        * config/tilegx/tilegx.c (tilegx_emit_cc_test): Likewise.
        (tilegx_print_operand): Likewise.
        * config/tilepro/tilepro.c (tilepro_emit_cc_test): Likewise.
        (tilepro_print_operand): Likewise.
        * config/v850/v850.c (v850_print_operand): Likewise.
        * config/vax/vax.c (vax_rtx_costs): Likewise.
        * config/visium/visium.c (visium_expand_int_cstore): Likewise.
        (visium_expand_fp_cstore): Likewise.
        * config/xtensa/xtensa.c (xtensa_expand_atomic): Likewise.
        (xtensa_rtx_costs): Likewise.

diff --git gcc/gcc/config/alpha/alpha.c gcc/gcc/config/alpha/alpha.c
index 94fed102..66f8711 100644
--- gcc/gcc/config/alpha/alpha.c
+++ gcc/gcc/config/alpha/alpha.c
@@ -1400,6 +1400,7 @@ alpha_rtx_costs (rtx x, machine_mode mode, int 
outer_code, int opno, int *total,
          return true;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case CONST_DOUBLE:
     case CONST_WIDE_INT:
@@ -1468,6 +1469,7 @@ alpha_rtx_costs (rtx x, machine_mode mode, int 
outer_code, int opno, int *total,
          return false;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case ASHIFTRT:
     case LSHIFTRT:
@@ -1504,6 +1506,7 @@ alpha_rtx_costs (rtx x, machine_mode mode, int 
outer_code, int opno, int *total,
          return false;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case ABS:
       if (! float_mode_p)
@@ -1512,6 +1515,7 @@ alpha_rtx_costs (rtx x, machine_mode mode, int 
outer_code, int opno, int *total,
          return false;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case FLOAT:
     case UNSIGNED_FLOAT:
@@ -2130,6 +2134,7 @@ alpha_legitimate_constant_p (machine_mode mode, rtx x)
       if (GET_CODE (x) != SYMBOL_REF)
        return true;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       /* TLS symbols are never valid.  */
@@ -2161,6 +2166,7 @@ alpha_legitimate_constant_p (machine_mode mode, rtx x)
       if (GET_MODE_SIZE (mode) != 8)
        return false;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case CONST_INT:
       if (TARGET_BUILD_CONSTANTS)
@@ -2658,6 +2664,7 @@ alpha_emit_setcc (rtx operands[], machine_mode cmp_mode)
       if (cmp_mode == DImode && op1 == const0_rtx)
        break;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case ORDERED:
       cmp_code = reverse_condition (code);
@@ -3095,6 +3102,7 @@ alpha_emit_xfloating_libcall (rtx func, rtx target, rtx 
operands[],
        case VOIDmode:
          gcc_assert (CONST_INT_P (operands[i]));
          /* FALLTHRU */
+         gcc_fallthrough ();
        case DImode:
          reg = gen_rtx_REG (DImode, regno);
          regno += 1;
@@ -5787,6 +5795,7 @@ alpha_function_value_1 (const_tree valtype, const_tree 
func ATTRIBUTE_UNUSED,
       if (!(TARGET_ABI_OPEN_VMS && valtype && AGGREGATE_TYPE_P (valtype)))
         PROMOTE_MODE (mode, dummy, valtype);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case MODE_COMPLEX_INT:
     case MODE_VECTOR_INT:
@@ -7092,6 +7101,7 @@ alpha_fold_builtin (tree fndecl, int n_args, tree *op,
     case ALPHA_BUILTIN_ZAP:
       opint[1] ^= 0xff;
       /* FALLTHRU */
+      gcc_fallthrough ();
     case ALPHA_BUILTIN_ZAPNOT:
       return alpha_fold_builtin_zapnot (op, opint, op_const);
 
diff --git gcc/gcc/config/alpha/predicates.md gcc/gcc/config/alpha/predicates.md
index 24fa3c2..c902f3e 100644
--- gcc/gcc/config/alpha/predicates.md
+++ gcc/gcc/config/alpha/predicates.md
@@ -182,6 +182,7 @@
       if (register_operand (op, mode))
        return 1;
       /* ... fall through ...  */
+      gcc_fallthrough ();
     case MEM:
       return ((TARGET_BWX || (mode != HImode && mode != QImode))
              && general_operand (op, mode));
diff --git gcc/gcc/config/arc/arc.c gcc/gcc/config/arc/arc.c
index c0aa075..735e861 100644
--- gcc/gcc/config/arc/arc.c
+++ gcc/gcc/config/arc/arc.c
@@ -734,6 +734,7 @@ arc_init (void)
            break;
          }
        /* Fall through.  */
+       gcc_fallthrough ();
       default:
        arc_multcost = COSTS_N_INSNS (30);
        break;
@@ -3448,6 +3449,7 @@ arc_print_operand (FILE *file, rtx x, int code)
          break;
        }
       /* Fall through.  Let output_addr_const deal with it.  */
+      gcc_fallthrough ();
     default :
       if (flag_pic
          || (GET_CODE (x) == CONST
@@ -4460,6 +4462,7 @@ arc_rtx_costs (rtx x, machine_mode mode, int outer_code,
          }
       }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
       /*  4 byte values can be fetched as immediate constants -
          let's give that the cost of an extra insn.  */
@@ -4609,6 +4612,7 @@ arc_rtx_costs (rtx x, machine_mode mode, int outer_code,
          return true;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
     /* scc_insn expands into two insns.  */
     case GTU: case GEU: case LEU:
       if (mode == SImode)
@@ -5408,10 +5412,12 @@ arc_legitimate_constant_p (machine_mode mode, rtx x)
       if (SYMBOL_REF_TLS_MODEL (x))
        return false;
       /* Fall through.  */
+      gcc_fallthrough ();
     case LABEL_REF:
       if (flag_pic)
        return false;
       /* Fall through.  */
+      gcc_fallthrough ();
 
     default:
       break;
@@ -8035,6 +8041,7 @@ arc_get_insn_variants (rtx_insn *insn, int len, bool, 
bool target_p,
          ilv++;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
     case TYPE_BRCC_NO_DELAY_SLOT:
       /* doloop_fallback* patterns are TYPE_BRCC_NO_DELAY_SLOT for
         (delay slot) scheduling purposes, but they are longer.  */
@@ -8356,6 +8363,7 @@ arc_ifcvt (void)
              continue;
            }
          /* Fall through.  */
+         gcc_fallthrough ();
        case 4: case 5:
          if (!NONDEBUG_INSN_P (insn))
            break;
@@ -9820,6 +9828,7 @@ arc_expand_atomic_op (enum rtx_code code, rtx mem, rtx 
val,
        }
 
       /* FALLTHRU.  */
+      gcc_fallthrough ();
     default:
       x = gen_rtx_fmt_ee (code, mode, before, val);
       emit_insn (gen_rtx_SET (after, x));
diff --git gcc/gcc/config/arc/predicates.md gcc/gcc/config/arc/predicates.md
index f85f931..450b163 100644
--- gcc/gcc/config/arc/predicates.md
+++ gcc/gcc/config/arc/predicates.md
@@ -517,6 +517,7 @@
       if (GET_MODE (op) == CC_ZNmode)
        return 1;
       /* Fall through.  */
+      gcc_fallthrough ();
     case CC_ZNmode: case CC_Cmode:
       return GET_MODE (op) == CCmode;
     default:
diff --git gcc/gcc/config/avr/avr-log.c gcc/gcc/config/avr/avr-log.c
index fe2cae4..3853471 100644
--- gcc/gcc/config/avr/avr-log.c
+++ gcc/gcc/config/avr/avr-log.c
@@ -229,6 +229,7 @@ avr_log_vadump (FILE *file, const char *caller, va_list ap)
               if (!current_pass)
                 return;
               /* FALLTHRU */
+             gcc_fallthrough ();
 
             case '?':
               avr_vdump (file, caller, "%F[%f:%P]");
diff --git gcc/gcc/config/avr/avr.c gcc/gcc/config/avr/avr.c
index 18ed766..53d726e 100644
--- gcc/gcc/config/avr/avr.c
+++ gcc/gcc/config/avr/avr.c
@@ -6212,6 +6212,7 @@ ashrqi3_out (rtx_insn *insn, rtx operands[], int *len)
            break;
 
          /* fall through */
+         gcc_fallthrough ();
 
        case 7:
          *len = 2;
@@ -6377,6 +6378,7 @@ ashrhi3_out (rtx_insn *insn, rtx operands[], int *len)
            break;
 
          /* fall through */
+         gcc_fallthrough ();
 
        case 15:
          return *len = 3, ("lsl %B0"     CR_TAB
@@ -6434,6 +6436,7 @@ avr_out_ashrpsi3 (rtx_insn *insn, rtx *op, int *plen)
             break;
 
           /* fall through */
+         gcc_fallthrough ();
 
         case 23:
           return avr_asm_len ("lsl %C0"     CR_TAB
@@ -6524,6 +6527,7 @@ ashrsi3_out (rtx_insn *insn, rtx operands[], int *len)
            break;
 
          /* fall through */
+         gcc_fallthrough ();
 
        case 31:
          if (AVR_HAVE_MOVW)
@@ -6936,6 +6940,7 @@ avr_out_lshrpsi3 (rtx_insn *insn, rtx *op, int *plen)
             break;
 
           /* fall through */
+         gcc_fallthrough ();
 
         case 23:
           return avr_asm_len ("clr %A0"    CR_TAB
@@ -10040,6 +10045,7 @@ avr_rtx_costs_1 (rtx x, machine_mode mode, int 
outer_code ATTRIBUTE_UNUSED,
           return true;
         }
       /* FALLTHRU */
+      gcc_fallthrough ();
     case AND:
     case IOR:
       *total = COSTS_N_INSNS (GET_MODE_SIZE (mode));
diff --git gcc/gcc/config/bfin/bfin.c gcc/gcc/config/bfin/bfin.c
index 75ddcf0..6d7839d 100644
--- gcc/gcc/config/bfin/bfin.c
+++ gcc/gcc/config/bfin/bfin.c
@@ -1569,6 +1569,7 @@ print_operand (FILE *file, rtx x, char code)
            x = GEN_INT (-8 - INTVAL (x));
 
          /* fall through */
+         gcc_fallthrough ();
 
        case SYMBOL_REF:
          output_addr_const (file, x);
@@ -2936,6 +2937,7 @@ bfin_rtx_costs (rtx x, machine_mode mode, int 
outer_code_i, int opno,
          return true;
        }
       /* fall through */
+      gcc_fallthrough ();
 
     case SIGN_EXTEND:
     case ZERO_EXTEND:
diff --git gcc/gcc/config/c6x/c6x.c gcc/gcc/config/c6x/c6x.c
index 4cbe63c..778f76e 100644
--- gcc/gcc/config/c6x/c6x.c
+++ gcc/gcc/config/c6x/c6x.c
@@ -1499,6 +1499,7 @@ c6x_expand_compare (rtx comparison, machine_mode mode)
        case UNGT:
          jump_code = EQ;
          /* fall through */
+         gcc_fallthrough ();
        case LE:
        case GE:
          code1 = code == LE || code == UNGT ? LT : GT;
@@ -1508,9 +1509,11 @@ c6x_expand_compare (rtx comparison, machine_mode mode)
        case UNORDERED:
          jump_code = EQ;
          /* fall through */
+         gcc_fallthrough ();
        case ORDERED:
          code3 = EQ;
          /* fall through */
+         gcc_fallthrough ();
        case LTGT:
          code1 = LT;
          code2 = GT;
@@ -2322,6 +2325,7 @@ c6x_mem_operand (rtx op, enum reg_class c, bool 
small_offset)
        }
 
       /* fall through */
+      gcc_fallthrough ();
     case PRE_INC:
     case PRE_DEC:
     case PRE_MODIFY:
@@ -2372,6 +2376,7 @@ c6x_legitimate_address_p_1 (machine_mode mode, rtx x, 
bool strict,
        return false;
 
       /* fall through */
+      gcc_fallthrough ();
     case PRE_INC:
     case PRE_DEC:
     case POST_INC:
@@ -2384,6 +2389,7 @@ c6x_legitimate_address_p_1 (machine_mode mode, rtx x, 
bool strict,
        return false;
 
       /* fall through */
+      gcc_fallthrough ();
     case REG:
       if (strict)
        return REGNO_OK_FOR_BASE_STRICT_P (REGNO (x));
@@ -3284,6 +3290,7 @@ count_unit_reqs (unit_req_table reqs, rtx_insn *head, 
rtx_insn *tail)
        case 2:
          reqs[side2][req2]++;
          /* fall through */
+         gcc_fallthrough ();
        case 1:
          reqs[side1][req1]++;
          break;
@@ -4104,6 +4111,7 @@ c6x_registers_update (rtx_insn *insn)
            case PRE_DEC:
              op = XEXP (op, 0);
              /* fall through */
+             gcc_fallthrough ();
            case REG:
              c6x_mark_reg_read (op, false);
              break;
@@ -4112,6 +4120,7 @@ c6x_registers_update (rtx_insn *insn)
              op = XEXP (op, 1);
              gcc_assert (GET_CODE (op) == PLUS);
              /* fall through */
+             gcc_fallthrough ();
            case PLUS:
              c6x_mark_reg_read (XEXP (op, 0), false);
              if (REG_P (XEXP (op, 1)))
diff --git gcc/gcc/config/c6x/c6x.h gcc/gcc/config/c6x/c6x.h
index 3209bf6..4e4b41c 100644
--- gcc/gcc/config/c6x/c6x.h
+++ gcc/gcc/config/c6x/c6x.h
@@ -93,6 +93,7 @@ extern c6x_cpu_t c6x_arch;
        case C6X_CPU_C64XP:                     \
          builtin_define ("_TMS320C6400_PLUS"); \
          /* ... fall through ... */            \
+         gcc_fallthrough ();                   \
        case C6X_CPU_C64X:                      \
          builtin_define ("_TMS320C6400");      \
          break;                                \
@@ -100,6 +101,7 @@ extern c6x_cpu_t c6x_arch;
        case C6X_CPU_C67XP:                     \
          builtin_define ("_TMS320C6700_PLUS"); \
          /* ... fall through ... */            \
+         gcc_fallthrough ();                   \
        case C6X_CPU_C67X:                      \
          builtin_define ("_TMS320C6700");      \
          break;                                \
diff --git gcc/gcc/config/c6x/predicates.md gcc/gcc/config/c6x/predicates.md
index 9db6002..3f6e968 100644
--- gcc/gcc/config/c6x/predicates.md
+++ gcc/gcc/config/c6x/predicates.md
@@ -193,6 +193,7 @@
       offset = INTVAL (XEXP (op, 1));
       op = XEXP (op, 0);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       /* For shared libraries, only allow symbols we know are local.
diff --git gcc/gcc/config/cr16/cr16.c gcc/gcc/config/cr16/cr16.c
index 141b8bc..b7a95c0 100644
--- gcc/gcc/config/cr16/cr16.c
+++ gcc/gcc/config/cr16/cr16.c
@@ -1309,6 +1309,7 @@ cr16_address_cost (rtx addr, machine_mode mode 
ATTRIBUTE_UNUSED,
     case CR16_REGP_REL:
       cost += 2;
       /* Fall through.  */
+      gcc_fallthrough ();
     case CR16_REG_REL:
       cost += 3;
       if (address.disp)
@@ -1575,6 +1576,7 @@ cr16_print_operand_address (FILE * file, machine_mode 
/*mode*/, rtx addr)
     case CR16_INDEX_REGP_REL:
       fprintf (file, "[%s]", reg_names[REGNO (address.index)]);
       /* Fall through.  */
+      gcc_fallthrough ();
     case CR16_REGP_REL:
       if (address.disp)
        {
diff --git gcc/gcc/config/cris/cris.c gcc/gcc/config/cris/cris.c
index 971d07f..447cfc9 100644
--- gcc/gcc/config/cris/cris.c
+++ gcc/gcc/config/cris/cris.c
@@ -961,6 +961,7 @@ cris_print_operand (FILE *file, rtx x, int code)
         and %E (and %e) and state passed between those modifiers.  */
       cris_output_insn_is_bound = 0;
       /* FALL THROUGH.  */
+      gcc_fallthrough ();
     case 'E':
       /* Print 's' if operand is SIGN_EXTEND or 'u' if ZERO_EXTEND unless
         cris_output_insn_is_bound is nonzero.  */
@@ -2187,6 +2188,7 @@ cris_rtx_costs (rtx x, machine_mode mode, int outer_code, 
int opno,
       if (outer_code != COMPARE)
         return false;
       /* fall through */
+      gcc_fallthrough ();
 
     case ZERO_EXTEND: case SIGN_EXTEND:
       *total = rtx_cost (XEXP (x, 0), VOIDmode, (enum rtx_code) outer_code,
diff --git gcc/gcc/config/epiphany/epiphany.c gcc/gcc/config/epiphany/epiphany.c
index f09a657..7f4a2ea 100644
--- gcc/gcc/config/epiphany/epiphany.c
+++ gcc/gcc/config/epiphany/epiphany.c
@@ -771,6 +771,7 @@ epiphany_rtx_costs (rtx x, machine_mode mode, int 
outer_code,
          return true;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case CONST:
     case LABEL_REF:
@@ -872,11 +873,13 @@ epiphany_address_cost (rtx addr, machine_mode mode,
          return 1;
        i >>= 1;
        /* Fall through.  */
+       gcc_fallthrough ();
       case 2:
        if (i & 1)
          return 1;
        i >>= 1;
        /* Fall through.  */
+       gcc_fallthrough ();
       case 1:
        return i < -7 || i > 7;
     }
@@ -1352,6 +1355,7 @@ epiphany_print_operand (FILE *file, rtx x, int code)
          break;
        }
       /* Fall through.  Let output_addr_const deal with it.  */
+      gcc_fallthrough ();
     case CONST_INT:
       fprintf(file,"%s",IMMEDIATE_PREFIX);
       if (code == 'C' || code == 'X')
@@ -1361,6 +1365,7 @@ epiphany_print_operand (FILE *file, rtx x, int code)
          break;
        }
       /* Fall through */
+      gcc_fallthrough ();
     default :
       output_addr_const (file, x);
       break;
@@ -2421,6 +2426,7 @@ epiphany_mode_needed (int entity, rtx_insn *insn)
     if (recog_memoized (insn) == CODE_FOR_set_fp_mode)
       mode = (enum attr_fp_mode) epiphany_mode_after (entity, mode, insn);
     /* Fall through.  */
+    gcc_fallthrough ();
   case EPIPHANY_MSW_ENTITY_NEAREST:
   case EPIPHANY_MSW_ENTITY_TRUNC:
     if (mode == FP_MODE_ROUND_UNKNOWN)
@@ -2469,6 +2475,7 @@ epiphany_mode_entry_exit (int entity, bool exit)
          || normal_mode == FP_MODE_ROUND_TRUNC)
       return FP_MODE_ROUND_UNKNOWN;
       /* Fall through.  */
+      gcc_fallthrough ();
     case EPIPHANY_MSW_ENTITY_NEAREST:
     case EPIPHANY_MSW_ENTITY_TRUNC:
     case EPIPHANY_MSW_ENTITY_ROUND_KNOWN:
@@ -2715,6 +2722,7 @@ epiphany_insert_mode_switch_use (rtx_insn *insn,
        near = gen_rtx_USE (VOIDmode, gen_rtx_REG (SImode, FP_ANYFP_REGNUM));
        trunc = copy_rtx (near);
        /* Fall through.  */
+       gcc_fallthrough ();
       case FP_MODE_INT:
       case FP_MODE_CALLER:
        near = gen_rtx_USE (VOIDmode, near);
diff --git gcc/gcc/config/fr30/fr30.c gcc/gcc/config/fr30/fr30.c
index f4fef2b..044a337 100644
--- gcc/gcc/config/fr30/fr30.c
+++ gcc/gcc/config/fr30/fr30.c
@@ -685,6 +685,7 @@ fr30_print_operand (FILE *file, rtx x, int code)
        }
 
       /* Fall through.  Let output_addr_const deal with it.  */
+      gcc_fallthrough ();
     default:
       output_addr_const (file, x);
       break;
diff --git gcc/gcc/config/frv/frv.c gcc/gcc/config/frv/frv.c
index 957ff03..e3ce9bc 100644
--- gcc/gcc/config/frv/frv.c
+++ gcc/gcc/config/frv/frv.c
@@ -2990,6 +2990,7 @@ frv_print_operand (FILE * file, rtx x, int code)
        }
 
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case '\0':
       if (GET_CODE (x) == REG)
@@ -3336,6 +3337,7 @@ frv_legitimate_address_p_1 (machine_mode mode,
         break;
 
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case REG:
       ret = frv_regno_ok_for_base_p (REGNO (x), strict_p);
@@ -3396,6 +3398,7 @@ frv_legitimate_address_p_1 (machine_mode mode,
            break;
 
          /* Fall through.  */
+         gcc_fallthrough ();
 
        case REG:
          /* Do not allow reg+reg addressing for modes > 1 word if we
@@ -4094,6 +4097,7 @@ frv_emit_movsi (rtx dest, rtx src)
                        break;
                      }
                    /* Fall through.  */
+                   gcc_fallthrough ();
                  default:
                    if (TARGET_GPREL_RO)
                      unspec = R_FRV_GPREL12;
@@ -9455,6 +9459,7 @@ frv_rtx_costs (rtx x,
          return true;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case CONST:
     case LABEL_REF:
diff --git gcc/gcc/config/h8300/h8300.c gcc/gcc/config/h8300/h8300.c
index 1818684..0d83310 100644
--- gcc/gcc/config/h8300/h8300.c
+++ gcc/gcc/config/h8300/h8300.c
@@ -1744,6 +1744,7 @@ h8300_print_operand (FILE *file, rtx x, int code)
                     processing bit operations on H8/300 or H8/300H
                     because 'U' constraint does not allow bit
                     operations on the tiny area on these machines.  */
+                 gcc_fallthrough ();
 
                case 'X':
                case 'T':
@@ -4109,6 +4110,7 @@ get_shift_alg (enum shift_type shift_type, enum 
shift_mode shift_mode,
     case SHIFT_INLINE:
       info->remainder = count;
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case SHIFT_LOOP:
       /* It is up to the caller to know that looping clobbers cc.  */
@@ -4624,6 +4626,7 @@ output_a_shift (rtx *operands)
     case SHIFT_SPECIAL:
       output_asm_insn (info.special, operands);
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case SHIFT_INLINE:
       n = info.remainder;
@@ -4805,6 +4808,7 @@ compute_a_shift_length (rtx insn ATTRIBUTE_UNUSED, rtx 
*operands)
            wlength++;
 
          /* Fall through.  */
+         gcc_fallthrough ();
 
        case SHIFT_INLINE:
          n = info.remainder;
@@ -4942,6 +4946,7 @@ compute_a_shift_cc (rtx insn ATTRIBUTE_UNUSED, rtx 
*operands)
        return info.cc_special;
 
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case SHIFT_INLINE:
       return info.cc_inline;
diff --git gcc/gcc/config/ia64/ia64.c gcc/gcc/config/ia64/ia64.c
index 6ab3400..e0f8be7 100644
--- gcc/gcc/config/ia64/ia64.c
+++ gcc/gcc/config/ia64/ia64.c
@@ -1889,6 +1889,7 @@ ia64_expand_vecint_compare (enum rtx_code code, 
machine_mode mode,
       code = reverse_condition (code);
       negate = true;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case LT:
     case LTU:
@@ -2359,6 +2360,7 @@ ia64_expand_atomic_op (enum rtx_code code, rtx mem, rtx 
val,
        case MEMMODEL_SYNC_SEQ_CST:
          emit_insn (gen_memory_barrier ());
          /* FALLTHRU */
+         gcc_fallthrough ();
        case MEMMODEL_RELAXED:
        case MEMMODEL_ACQUIRE:
        case MEMMODEL_SYNC_ACQUIRE:
@@ -5547,6 +5549,7 @@ ia64_print_operand (FILE * file, rtx x, int code)
     case POST_MODIFY:
       x = XEXP (x, 0);
       /* ... fall through ...  */
+      gcc_fallthrough ();
 
     case REG:
       fputs (reg_names [REGNO (x)], file);
@@ -5648,6 +5651,7 @@ ia64_rtx_costs (rtx x, machine_mode mode, int outer_code,
          return true;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case ASHIFT:
     case ASHIFTRT:
@@ -6879,6 +6883,7 @@ group_barrier_needed (rtx_insn *insn)
          break;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case INSN:
       if (GET_CODE (PATTERN (insn)) == USE
@@ -11723,6 +11728,7 @@ ia64_expand_vec_perm_const (rtx operands[4])
        if (d.perm[i] >= nelt)
          d.perm[i] -= nelt;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case 1:
       d.op1 = d.op0;
diff --git gcc/gcc/config/ia64/predicates.md gcc/gcc/config/ia64/predicates.md
index 02347f7..d2cb450 100644
--- gcc/gcc/config/ia64/predicates.md
+++ gcc/gcc/config/ia64/predicates.md
@@ -50,6 +50,7 @@
       offset = INTVAL (XEXP (op, 1));
       op = XEXP (op, 0);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       if (CONSTANT_POOL_ADDRESS_P (op))
@@ -114,6 +115,7 @@
        return false;
       op = XEXP (op, 0);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
        return SYMBOL_REF_LOCAL_P (op);
@@ -137,6 +139,7 @@
        return false;
       op = XEXP (op, 0);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       return SYMBOL_REF_SMALL_ADDR_P (op);
@@ -190,6 +193,7 @@
       addend = INTVAL (XEXP (op, 1));
       op = XEXP (op, 0);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       /* These symbols shouldn't be used with got loads.  */
@@ -272,6 +276,7 @@
        return false;
       op = XEXP (op, 0);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       return SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_INITIAL_EXEC;
@@ -295,6 +300,7 @@
         return false;
       op = XEXP (op, 0);
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       return SYMBOL_REF_TLS_MODEL (op) == TLS_MODEL_LOCAL_EXEC;
diff --git gcc/gcc/config/iq2000/iq2000.c gcc/gcc/config/iq2000/iq2000.c
index 73b9cdb..9670103 100644
--- gcc/gcc/config/iq2000/iq2000.c
+++ gcc/gcc/config/iq2000/iq2000.c
@@ -804,6 +804,7 @@ iq2000_address_cost (rtx addr, machine_mode mode, 
addr_space_t as,
       }
 
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case SYMBOL_REF:
       return SYMBOL_REF_FLAG (addr) ? 1 : 2;
diff --git gcc/gcc/config/lm32/lm32.c gcc/gcc/config/lm32/lm32.c
index 4a8079f..379b465 100644
--- gcc/gcc/config/lm32/lm32.c
+++ gcc/gcc/config/lm32/lm32.c
@@ -1122,6 +1122,7 @@ lm32_rtx_costs (rtx x, machine_mode mode, int outer_code,
                return true;
              }
            /* Fall through.  */ 
+           gcc_fallthrough ();
 
          default:
             if (satisfies_constraint_K (x))
@@ -1151,6 +1152,7 @@ lm32_rtx_costs (rtx x, machine_mode mode, int outer_code,
          break;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case LABEL_REF:
     case CONST_DOUBLE:
diff --git gcc/gcc/config/m32r/m32r.c gcc/gcc/config/m32r/m32r.c
index b40c53c..487a6b5 100644
--- gcc/gcc/config/m32r/m32r.c
+++ gcc/gcc/config/m32r/m32r.c
@@ -1375,6 +1375,7 @@ m32r_rtx_costs (rtx x, machine_mode mode ATTRIBUTE_UNUSED,
          return true;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case CONST:
     case LABEL_REF:
@@ -2175,6 +2176,7 @@ m32r_print_operand (FILE * file, rtx x, int code)
              return;
            }
          /* fall through */
+         gcc_fallthrough ();
        case LABEL_REF :
          fputs (code == 'T' ? "shigh(" : "low(", file);
          output_addr_const (file, x);
@@ -2275,6 +2277,7 @@ m32r_print_operand (FILE * file, rtx x, int code)
        }
 
       /* Fall through.  Let output_addr_const deal with it.  */
+      gcc_fallthrough ();
 
     default :
       output_addr_const (file, x);
diff --git gcc/gcc/config/m68k/m68k.c gcc/gcc/config/m68k/m68k.c
index 03f474e..1896290 100644
--- gcc/gcc/config/m68k/m68k.c
+++ gcc/gcc/config/m68k/m68k.c
@@ -6153,6 +6153,7 @@ m68k_sched_md_init_global (FILE *sched_dump 
ATTRIBUTE_UNUSED,
       sched_ib.filled = 0;
 
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case CPU_CFV1:
     case CPU_CFV2:
diff --git gcc/gcc/config/m68k/m68k.h gcc/gcc/config/m68k/m68k.h
index 2aa858f..554bb2d 100644
--- gcc/gcc/config/m68k/m68k.h
+++ gcc/gcc/config/m68k/m68k.h
@@ -90,6 +90,7 @@ along with GCC; see the file COPYING3.  If not see
        case u68020_60:                                                 \
          builtin_define_std ("mc68060");                               \
          /* Fall through.  */                                          \
+         gcc_fallthrough ();                                           \
        case u68020_40:                                                 \
          builtin_define_std ("mc68040");                               \
          builtin_define_std ("mc68030");                               \
diff --git gcc/gcc/config/mips/mips.c gcc/gcc/config/mips/mips.c
index df7b1da..2086d2a 100644
--- gcc/gcc/config/mips/mips.c
+++ gcc/gcc/config/mips/mips.c
@@ -2189,6 +2189,7 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_context 
context,
        return true;
 
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case SYMBOL_GP_RELATIVE:
       /* Make sure that the offset refers to something within the
@@ -2284,6 +2285,7 @@ mips_symbol_insns_1 (enum mips_symbol_type type, 
machine_mode mode)
        return 0;
 
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case SYMBOL_GOT_PAGE_OFST:
       /* Unless -funit-at-a-time is in effect, we can't be sure whether the
@@ -2847,6 +2849,7 @@ mips_const_insns (rtx x)
          && mips_const_vector_same_int_p (x, GET_MODE (x), -512, 511))
        return 1;
       /* Fall through.  */
+      gcc_fallthrough ();
     case CONST_DOUBLE:
       /* Allow zeros for normal mode, where we can use $0.  */
       return !TARGET_MIPS16 && x == CONST0_RTX (GET_MODE (x)) ? 1 : 0;
@@ -4023,6 +4026,7 @@ mips_set_reg_reg_cost (machine_mode mode)
       if (TARGET_HARD_FLOAT)
        return mips_set_reg_reg_piece_cost (mode, UNITS_PER_HWFPVALUE);
       /* Fall through */
+      gcc_fallthrough ();
 
     default:
       return mips_set_reg_reg_piece_cost (mode, UNITS_PER_WORD);
@@ -4096,6 +4100,7 @@ mips_rtx_costs (rtx x, machine_mode mode, int outer_code,
            }
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case CONST:
     case SYMBOL_REF:
@@ -4209,6 +4214,7 @@ mips_rtx_costs (rtx x, machine_mode mode, int outer_code,
        }
            
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case IOR:
     case XOR:
@@ -4297,6 +4303,7 @@ mips_rtx_costs (rtx x, machine_mode mode, int outer_code,
            }
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case PLUS:
       if (float_mode_p)
@@ -4395,6 +4402,7 @@ mips_rtx_costs (rtx x, machine_mode mode, int outer_code,
          return true;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case SQRT:
     case MOD:
@@ -4404,6 +4412,7 @@ mips_rtx_costs (rtx x, machine_mode mode, int outer_code,
          return false;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case UDIV:
     case UMOD:
@@ -13778,6 +13787,7 @@ mips_output_order_conditional_branch (rtx_insn *insn, 
rtx *operands,
            case LTU:
              inverted_p = !inverted_p;
              /* Fall through.  */
+             gcc_fallthrough ();
            case GE:
            case GEU:
              branch[!inverted_p] = MIPS_BRANCH_C ("b", "%0");
@@ -13801,6 +13811,7 @@ mips_output_order_conditional_branch (rtx_insn *insn, 
rtx *operands,
        case LEU:
          inverted_p = !inverted_p;
          /* Fall through.  */
+         gcc_fallthrough ();
        case GTU:
          if (TARGET_CB_MAYBE)
            {
@@ -13818,6 +13829,7 @@ mips_output_order_conditional_branch (rtx_insn *insn, 
rtx *operands,
        case LTU:
          inverted_p = !inverted_p;
          /* Fall through.  */
+         gcc_fallthrough ();
        case GEU:
          if (TARGET_CB_MAYBE)
            {
@@ -21196,6 +21208,7 @@ mips_expand_vec_perm_const (rtx operands[4])
       if (!rtx_equal_p (d.op0, d.op1))
        break;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case 2:
       for (i = 0; i < nelt; ++i)
diff --git gcc/gcc/config/mmix/predicates.md gcc/gcc/config/mmix/predicates.md
index 8e920c2..c856c46 100644
--- gcc/gcc/config/mmix/predicates.md
+++ gcc/gcc/config/mmix/predicates.md
@@ -117,6 +117,7 @@
                  && GET_MODE (XEXP (op, 1)) == VOIDmode)))
        return 1;
       /* Fall through.  */
+      gcc_fallthrough ();
     default:
       return mmix_address_operand (op, mode);
     }
diff --git gcc/gcc/config/mn10300/mn10300.c gcc/gcc/config/mn10300/mn10300.c
index 71815d6..befd623 100644
--- gcc/gcc/config/mn10300/mn10300.c
+++ gcc/gcc/config/mn10300/mn10300.c
@@ -397,6 +397,7 @@ mn10300_print_operand (FILE *file, rtx x, int code)
          break;
        }
       /* FALL THROUGH */
+      gcc_fallthrough ();
 
     default:
       switch (GET_CODE (x))
@@ -2455,6 +2456,7 @@ mn10300_rtx_costs (rtx x, machine_mode mode, int 
outer_code,
            goto alldone;
          }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case ASHIFTRT:
     case LSHIFTRT:
@@ -3011,6 +3013,7 @@ extract_bundle (rtx_insn *insn, struct liw_data * pdata)
       /* The AND, OR and XOR long instruction words only accept register 
arguments.  */
       allow_consts = false;
       /* Fall through.  */
+      gcc_fallthrough ();
     default:
       pdata->dest = SET_DEST (p);
       pdata->src = XEXP (SET_SRC (p), 1);
diff --git gcc/gcc/config/mn10300/mn10300.md gcc/gcc/config/mn10300/mn10300.md
index decda0e..e9f137c 100644
--- gcc/gcc/config/mn10300/mn10300.md
+++ gcc/gcc/config/mn10300/mn10300.md
@@ -306,6 +306,7 @@
          && REGNO_EXTENDED_P (REGNO (operands[0]), 1))
        return "movu %1,%0";
       /* FALLTHRU */
+      gcc_fallthrough ();
     case 5:
     case 6:
     case 2:
@@ -454,6 +455,7 @@
            return "movu %1,%0";
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
     case 3:  /* reg-reg */
     case 4:  /* reg-mem */
     case 5:  /* mem-reg */
diff --git gcc/gcc/config/msp430/msp430.c gcc/gcc/config/msp430/msp430.c
index dba4d19..d260eb2 100644
--- gcc/gcc/config/msp430/msp430.c
+++ gcc/gcc/config/msp430/msp430.c
@@ -979,6 +979,7 @@ msp430_initial_elimination_offset (int from, int to)
       rv += cfun->machine->framesize_outgoing;
       rv += cfun->machine->framesize_locals;
       /* Fall through.  */
+      gcc_fallthrough ();
     case FRAME_POINTER_REGNUM:
       rv += cfun->machine->framesize_regs;
       /* Allow for the saved return address.  */
@@ -996,6 +997,7 @@ msp430_initial_elimination_offset (int from, int to)
       /* Allow for the fall through above.  */
       rv -= (TARGET_LARGE ? 4 : 2);
       rv -= cfun->machine->framesize_regs;
+      gcc_fallthrough ();
     case ARG_POINTER_REGNUM:
       break;
     default:
@@ -3651,6 +3653,7 @@ msp430_print_operand (FILE * file, rtx op, int letter)
          break;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
     case CONST_INT:
     case SYMBOL_REF:
     case LABEL_REF:
diff --git gcc/gcc/config/nds32/nds32-cost.c gcc/gcc/config/nds32/nds32-cost.c
index e6a29fc..9d7a1d0 100644
--- gcc/gcc/config/nds32/nds32-cost.c
+++ gcc/gcc/config/nds32/nds32-cost.c
@@ -191,6 +191,7 @@ performance_cost:
   /* This is section for performance cost model.  */
 
   /* FALLTHRU, currently we use same cost model as size_cost.  */
+  gcc_fallthrough ();
 
 size_cost:
   /* This is section for size cost model.  */
diff --git gcc/gcc/config/nios2/nios2.c gcc/gcc/config/nios2/nios2.c
index 18fcbb3..3e5aed8 100644
--- gcc/gcc/config/nios2/nios2.c
+++ gcc/gcc/config/nios2/nios2.c
@@ -1975,11 +1975,13 @@ nios2_legitimate_address_p (machine_mode mode 
ATTRIBUTE_UNUSED,
        return false;
 
       /* Else, fall through.  */
+      gcc_fallthrough ();
     case CONST:
       if (gprel_constant_p (operand))
        return true;
 
       /* Else, fall through.  */
+      gcc_fallthrough ();
     case LABEL_REF:
     case CONST_INT:
     case CONST_DOUBLE:
@@ -2583,6 +2585,7 @@ nios2_print_operand (FILE *file, rtx op, int letter)
       }
 
       /* Else, fall through.  */
+      gcc_fallthrough ();
 
     case CONST:
     case LABEL_REF:
diff --git gcc/gcc/config/pa/pa.c gcc/gcc/config/pa/pa.c
index 1047f3d..a0e95bc 100644
--- gcc/gcc/config/pa/pa.c
+++ gcc/gcc/config/pa/pa.c
@@ -1530,6 +1530,7 @@ hppa_rtx_costs (rtx x, machine_mode mode, int outer_code,
          return true;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case UDIV:
     case MOD:
diff --git gcc/gcc/config/pdp11/pdp11.c gcc/gcc/config/pdp11/pdp11.c
index ec3d61a..00e2e3a 100644
--- gcc/gcc/config/pdp11/pdp11.c
+++ gcc/gcc/config/pdp11/pdp11.c
@@ -905,6 +905,7 @@ pdp11_rtx_costs (rtx x, machine_mode mode, int outer_code 
ATTRIBUTE_UNUSED,
          return true;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case CONST:
     case LABEL_REF:
diff --git gcc/gcc/config/rl78/rl78-real.md gcc/gcc/config/rl78/rl78-real.md
index 530b2fe..400431c 100644
--- gcc/gcc/config/rl78/rl78-real.md
+++ gcc/gcc/config/rl78/rl78-real.md
@@ -467,6 +467,7 @@
         if (rl78_flags_already_set (operands[0], operands[1]))
          return "sk%C0\; br\t!!%3\; # cmpw eliminated";
        /* else fall through.  */
+       gcc_fallthrough ();
       case 1:
        return "cmpw\t%1, %2\; sk%C0\; br\t!!%3";
       case 2:
diff --git gcc/gcc/config/rl78/rl78.c gcc/gcc/config/rl78/rl78.c
index 3ddb198..936c6d8 100644
--- gcc/gcc/config/rl78/rl78.c
+++ gcc/gcc/config/rl78/rl78.c
@@ -928,6 +928,7 @@ characterize_address (rtx x, rtx *base, rtx *index, rtx 
*addend)
          return true;
        }
       /* fall through */
+      gcc_fallthrough ();
     case MEM:
     case REG:
       return false;
@@ -1259,6 +1260,7 @@ rl78_initial_elimination_offset (int from, int to)
       rv += cfun->machine->framesize_outgoing;
       rv += cfun->machine->framesize_locals;
       /* Fall through.  */
+      gcc_fallthrough ();
     case FRAME_POINTER_REGNUM:
       rv += cfun->machine->framesize_regs;
       rv += 4;
diff --git gcc/gcc/config/rx/rx.c gcc/gcc/config/rx/rx.c
index 8dfc885..b829f52 100644
--- gcc/gcc/config/rx/rx.c
+++ gcc/gcc/config/rx/rx.c
@@ -454,10 +454,12 @@ rx_print_operand_address (FILE * file, machine_mode 
/*mode*/, rtx addr)
     case UNSPEC:
       addr = XVECEXP (addr, 0, 0);
       /* Fall through.  */
+      gcc_fallthrough ();
     case LABEL_REF:
     case SYMBOL_REF:
       fprintf (file, "#");
       /* Fall through.  */
+      gcc_fallthrough ();
     default:
       output_addr_const (file, addr);
       break;
@@ -735,6 +737,7 @@ rx_print_operand (FILE * file, rtx op, int letter)
       gcc_assert (GET_MODE_SIZE (GET_MODE (op)) <= 4);
       unsigned_load = true;
       /* Fall through.  */
+      gcc_fallthrough ();
     case 'Q':
       if (MEM_P (op))
        {
@@ -797,6 +800,7 @@ rx_print_operand (FILE * file, rtx op, int letter)
        }
 
       /* Fall through.  */
+      gcc_fallthrough ();
 
     default:
       if (GET_CODE (op) == CONST
@@ -910,6 +914,7 @@ rx_print_operand (FILE * file, rtx op, int letter)
              }
            }
          /* Fall through */
+         gcc_fallthrough ();
 
        case CONST:
        case SYMBOL_REF:
@@ -2787,15 +2792,19 @@ rx_option_override (void)
              case 4:
                fixed_regs[10] = call_used_regs [10] = 1;
                /* Fall through.  */
+               gcc_fallthrough ();
              case 3:
                fixed_regs[11] = call_used_regs [11] = 1;
                /* Fall through.  */
+               gcc_fallthrough ();
              case 2:
                fixed_regs[12] = call_used_regs [12] = 1;
                /* Fall through.  */
+               gcc_fallthrough ();
              case 1:
                fixed_regs[13] = call_used_regs [13] = 1;
                /* Fall through.  */
+               gcc_fallthrough ();
              case 0:
                rx_num_interrupt_regs = opt->value;
                break;
diff --git gcc/gcc/config/s390/s390.c gcc/gcc/config/s390/s390.c
index ee0187c..a99c7d4 100644
--- gcc/gcc/config/s390/s390.c
+++ gcc/gcc/config/s390/s390.c
@@ -1472,6 +1472,7 @@ s390_select_ccmode (enum rtx_code code, rtx op0, rtx op1)
              return CCAPmode;
          }
        /* Fall through.  */
+       gcc_fallthrough ();
       case UNORDERED:
       case ORDERED:
       case UNEQ:
@@ -6684,6 +6685,7 @@ s390_expand_atomic (machine_mode mode, enum rtx_code code,
       val = expand_simple_binop (SImode, AND, val, ac.modemask,
                                 NULL_RTX, 1, OPTAB_DIRECT);
       /* FALLTHRU */
+      gcc_fallthrough ();
     case SET:
       if (ac.aligned && MEM_P (val))
        store_bit_field (new_rtx, GET_MODE_BITSIZE (mode), 0,
diff --git gcc/gcc/config/sh/sh.c gcc/gcc/config/sh/sh.c
index 0960a99..d10f469 100644
--- gcc/gcc/config/sh/sh.c
+++ gcc/gcc/config/sh/sh.c
@@ -1282,6 +1282,7 @@ sh_print_operand (FILE *stream, rtx x, int code)
       gcc_assert (MEM_P (x));
       x = XEXP (x, 0);
       /* Fall through.  */
+      gcc_fallthrough ();
     case 'U':
       switch (GET_CODE (x))
        {
@@ -1338,6 +1339,7 @@ sh_print_operand (FILE *stream, rtx x, int code)
          break;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     default_output:
     default:
@@ -1395,6 +1397,7 @@ sh_print_operand (FILE *stream, rtx x, int code)
 
          x = SUBREG_REG (x);
          /* Fall through.  */
+         gcc_fallthrough ();
 
        reg:
        case REG:
@@ -2690,6 +2693,7 @@ output_branch (int logic, rtx_insn *insn, rtx *operands)
          return "";
        }
       /* When relaxing, fall through.  */
+      gcc_fallthrough ();
     case 4:
       {
        char buffer[10];
@@ -3420,6 +3424,7 @@ sh_rtx_costs (rtx x, machine_mode mode ATTRIBUTE_UNUSED, 
int outer_code,
          return true;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case XOR:
     case IOR:
@@ -3455,6 +3460,7 @@ sh_rtx_costs (rtx x, machine_mode mode ATTRIBUTE_UNUSED, 
int outer_code,
          return true;
        }
       /* Fall through to shiftcosts.  */
+      gcc_fallthrough ();
     case ASHIFT:
     case ASHIFTRT:
       {
diff --git gcc/gcc/config/sh/sh.md gcc/gcc/config/sh/sh.md
index edc4d15..8c58669 100644
--- gcc/gcc/config/sh/sh.md
+++ gcc/gcc/config/sh/sh.md
@@ -5845,6 +5845,7 @@
          break;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case PLUS:
       emit_insn (gen_movsf_ie (reg0, operands[1]));
@@ -5906,6 +5907,7 @@
          break;
        }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case PLUS:
       /* Since REG+DISP addressing has already been decided upon by gcc
diff --git gcc/gcc/config/sparc/sparc.c gcc/gcc/config/sparc/sparc.c
index 1d2ecaa..66af776 100644
--- gcc/gcc/config/sparc/sparc.c
+++ gcc/gcc/config/sparc/sparc.c
@@ -11160,6 +11160,7 @@ sparc_rtx_costs (rtx x, machine_mode mode, int 
outer_code,
          return false;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case ABS:
     case FLOAT:
@@ -11656,6 +11657,7 @@ sparc_emit_membar_for_model (enum memmodel model,
       if (load_store == 3 && before_after == 1)
        implied |= StoreLoad;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SMM_PSO:
       /* Partial Store Ordering: all memory transactions with load semantics
@@ -11667,6 +11669,7 @@ sparc_emit_membar_for_model (enum memmodel model,
       if (load_store == 3 && before_after == 2)
        implied |= StoreLoad | StoreStore;
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case SMM_RMO:
       /* Relaxed Memory Ordering: no implicit bits.  */
diff --git gcc/gcc/config/spu/spu.c gcc/gcc/config/spu/spu.c
index c3757eb..297be7e 100644
--- gcc/gcc/config/spu/spu.c
+++ gcc/gcc/config/spu/spu.c
@@ -3200,6 +3200,7 @@ classify_immediate (rtx op, machine_mode mode)
            && GET_CODE (CONST_VECTOR_ELT (op, i)) != CONST_DOUBLE)
          return IC_POOL;
       /* Fall through. */
+      gcc_fallthrough ();
 
     case CONST_INT:
     case CONST_DOUBLE:
diff --git gcc/gcc/config/tilegx/tilegx.c gcc/gcc/config/tilegx/tilegx.c
index 06c832c..953ced6 100644
--- gcc/gcc/config/tilegx/tilegx.c
+++ gcc/gcc/config/tilegx/tilegx.c
@@ -2547,6 +2547,7 @@ tilegx_emit_cc_test (enum rtx_code code, rtx op0, rtx op1,
          if (n == -1)
            break;
          /* FALLTHRU */
+         gcc_fallthrough ();
 
        case LTU:
          /* Change ((unsigned)x < 0x1000) into !((int)x >> 12), etc.
@@ -5236,6 +5237,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
        }
       }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case 'h':
       {
@@ -5386,6 +5388,7 @@ tilegx_print_operand (FILE *file, rtx x, int code)
          return;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case 0:
       if (REG_P (x))
diff --git gcc/gcc/config/tilepro/tilepro.c gcc/gcc/config/tilepro/tilepro.c
index 628cd04..7185dda 100644
--- gcc/gcc/config/tilepro/tilepro.c
+++ gcc/gcc/config/tilepro/tilepro.c
@@ -2351,6 +2351,7 @@ tilepro_emit_cc_test (enum rtx_code code, rtx op0, rtx 
op1,
          if (n == -1)
            break;
          /* FALLTHRU */
+         gcc_fallthrough ();
 
        case LTU:
          /* Change ((unsigned)x < 0x1000) into !((unsigned)x >> 12),
@@ -4792,6 +4793,7 @@ tilepro_print_operand (FILE *file, rtx x, int code)
          return;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case 0:
       if (REG_P (x))
diff --git gcc/gcc/config/v850/v850.c gcc/gcc/config/v850/v850.c
index e0e4215..9529e27 100644
--- gcc/gcc/config/v850/v850.c
+++ gcc/gcc/config/v850/v850.c
@@ -411,6 +411,7 @@ v850_print_operand (FILE * file, rtx x, int code)
           break;
         }
       /* Fall through.  */
+      gcc_fallthrough ();
     case 'b':
     case 'B':
     case 'C':
diff --git gcc/gcc/config/vax/vax.c gcc/gcc/config/vax/vax.c
index 804f0c7..35a62de 100644
--- gcc/gcc/config/vax/vax.c
+++ gcc/gcc/config/vax/vax.c
@@ -785,6 +785,7 @@ vax_rtx_costs (rtx x, machine_mode mode, int outer_code,
          return true;
        }
       /* FALLTHRU */
+      gcc_fallthrough ();
 
     case CONST:
     case LABEL_REF:
diff --git gcc/gcc/config/visium/visium.c gcc/gcc/config/visium/visium.c
index 6712fed..be91ad7 100644
--- gcc/gcc/config/visium/visium.c
+++ gcc/gcc/config/visium/visium.c
@@ -2219,6 +2219,7 @@ visium_expand_int_cstore (rtx *operands, enum 
machine_mode mode)
       reverse = true;
 
       /* ... fall through ...  */
+      gcc_fallthrough ();
 
     case LTU:
     case GTU:
@@ -2267,6 +2268,7 @@ visium_expand_fp_cstore (rtx *operands,
       reverse = true;
 
       /* ... fall through ...  */
+      gcc_fallthrough ();
 
     case LT:
     case GT:
diff --git gcc/gcc/config/xtensa/xtensa.c gcc/gcc/config/xtensa/xtensa.c
index 64d089b..fa0140e 100644
--- gcc/gcc/config/xtensa/xtensa.c
+++ gcc/gcc/config/xtensa/xtensa.c
@@ -1565,6 +1565,7 @@ xtensa_expand_atomic (enum rtx_code code, rtx target, rtx 
mem, rtx val,
       val = expand_simple_binop (SImode, AND, val, ac.modemask,
                                 NULL_RTX, 1, OPTAB_DIRECT);
       /* FALLTHRU */
+      gcc_fallthrough ();
     case SET:
       tmp = expand_simple_binop (SImode, AND, old, ac.modemaski,
                                 NULL_RTX, 1, OPTAB_DIRECT);
@@ -2424,6 +2425,7 @@ print_operand (FILE *file, rtx x, int letter)
        }
 
       /* fall through */
+      gcc_fallthrough ();
 
     default:
       if (GET_CODE (x) == REG || GET_CODE (x) == SUBREG)
@@ -3739,6 +3741,7 @@ xtensa_rtx_costs (rtx x, machine_mode mode, int 
outer_code,
          }
       }
       /* Fall through.  */
+      gcc_fallthrough ();
 
     case UDIV:
     case UMOD:

Reply via email to