@@ -2418,6 +2418,7 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
case PREDECREMENT_EXPR:
if (TREE_CODE (type1) == BOOLEAN_TYPE)
return;
+ gcc_fallthrough ();
case POSTINCREMENT_EXPR:
case PREINCREMENT_EXPR:
if (ARITHMETIC_TYPE_P (type1) || TYPE_PTROB_P (type1))
@@ -2454,6 +2455,7 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
case UNARY_PLUS_EXPR: /* unary + */
if (TYPE_PTR_P (type1))
break;
+ gcc_fallthrough ();
case NEGATE_EXPR:
if (ARITHMETIC_TYPE_P (type1))
break;
@@ -2539,6 +2541,8 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
type2 = ptrdiff_type_node;
break;
}
+ /* XXX Really fallthru? */
+ gcc_fallthrough ();
case MULT_EXPR:
case TRUNC_DIV_EXPR:
if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
@@ -2561,6 +2565,7 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
break;
}
/* Fall through. */
+ gcc_fallthrough ();
case LT_EXPR:
case GT_EXPR:
case LE_EXPR:
@@ -2591,6 +2596,7 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
case PLUS_EXPR:
if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
break;
+ gcc_fallthrough ();
case ARRAY_REF:
if (INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (type1) && TYPE_PTROB_P (type2))
{
@@ -2671,6 +2677,8 @@ add_builtin_candidate (struct z_candidate **candidates, enum tree_code code,
type2 = ptrdiff_type_node;
break;
}
+ /* XXX Really fallthru? */
+ gcc_fallthrough ();
case MULT_EXPR:
case TRUNC_DIV_EXPR:
if (ARITHMETIC_TYPE_P (type1) && ARITHMETIC_TYPE_P (type2))
@@ -2899,6 +2907,8 @@ add_builtin_candidates (struct z_candidate **candidates, enum tree_code code,
case GE_EXPR:
enum_p = 1;
/* Fall through. */
+ gcc_fallthrough ();
+
default:
ref1 = 0;
@@ -3952,6 +3962,7 @@ build_integral_nontype_arg_conv (tree type, tree expr, tsubst_flags_t complain)
error_at (loc, "conversion from %qT to %qT not considered for "
"non-type template argument", t, type);
/* and fall through. */
+ gcc_fallthrough ();
default:
conv = NULL;
@@ -5477,6 +5488,7 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1,
case MODIFY_EXPR:
if (code2 != NOP_EXPR)
break;
+ gcc_fallthrough ();
case COMPONENT_REF:
case ARRAY_REF:
memonly = true;
@@ -5821,6 +5833,7 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1,
code_orig_arg1, arg1,
code_orig_arg2, arg2);
/* Fall through. */
+ gcc_fallthrough ();
case GT_EXPR:
case LT_EXPR:
case GE_EXPR:
@@ -5834,6 +5847,7 @@ build_new_op_1 (location_t loc, enum tree_code code, int flags, tree arg1,
if (complain & tf_warning && warn_tautological_compare)
warn_tautological_cmp (loc, code, arg1, arg2);
/* Fall through. */
+ gcc_fallthrough ();
case PLUS_EXPR:
case MINUS_EXPR:
case MULT_EXPR:
@@ -6646,6 +6660,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
if (! MAYBE_CLASS_TYPE_P (totype))
return expr;
/* Else fall through. */
+ gcc_fallthrough ();
case ck_base:
if (convs->kind == ck_base && !convs->need_temporary_p)
{
@@ -96,18 +96,23 @@ libc_name::hash (register const char *str, register unsigned int len)
default:
hval += asso_values[(unsigned char)str[5]+1];
/*FALLTHROUGH*/
+ gcc_fallthrough ();
case 5:
hval += asso_values[(unsigned char)str[4]];
/*FALLTHROUGH*/
+ gcc_fallthrough ();
case 4:
hval += asso_values[(unsigned char)str[3]];
/*FALLTHROUGH*/
+ gcc_fallthrough ();
case 3:
hval += asso_values[(unsigned char)str[2]];
/*FALLTHROUGH*/
+ gcc_fallthrough ();
case 2:
hval += asso_values[(unsigned char)str[1]];
/*FALLTHROUGH*/
+ gcc_fallthrough ();
case 1:
hval += asso_values[(unsigned char)str[0]];
break;
@@ -7392,6 +7392,7 @@ fixed_type_or_null (tree instance, int *nonnull, int *cdtorp)
return TREE_TYPE (TREE_TYPE (instance));
}
/* fall through... */
+ gcc_fallthrough ();
case TARGET_EXPR:
case PARM_DECL:
case RESULT_DECL:
@@ -8276,6 +8277,7 @@ instantiate_type (tree lhstype, tree rhs, tsubst_flags_t complain)
gcc_assert (TREE_CODE (rhs) == TEMPLATE_ID_EXPR);
/* Fall through. */
+ gcc_fallthrough ();
case TEMPLATE_ID_EXPR:
{
@@ -3842,6 +3842,7 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t,
if (r)
break;
/* else fall through */
+ gcc_fallthrough ();
case PLUS_EXPR:
case MINUS_EXPR:
@@ -4661,6 +4662,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict,
case IFN_SUB_OVERFLOW:
case IFN_MUL_OVERFLOW:
bail = false;
+ gcc_fallthrough ();
default:
break;
@@ -4976,6 +4978,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict,
if (TYPE_P (TREE_OPERAND (t, 0)))
return true;
/* else fall through. */
+ gcc_fallthrough ();
case REALPART_EXPR:
case IMAGPART_EXPR:
@@ -5050,6 +5053,8 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict,
}
return false;
}
+ /* XXX Really fallthru? */
+ gcc_fallthrough ();
case INIT_EXPR:
return RECUR (TREE_OPERAND (t, 1), rval);
@@ -5127,6 +5132,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict,
case TRUTH_OR_EXPR:
case TRUTH_ORIF_EXPR:
tmp = boolean_false_node;
+ gcc_fallthrough ();
truth:
{
tree op = TREE_OPERAND (t, 0);
@@ -5167,6 +5173,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict,
case COMPLEX_EXPR:
want_rval = true;
/* Fall through. */
+ gcc_fallthrough ();
case ARRAY_REF:
case ARRAY_RANGE_REF:
case MEMBER_REF:
@@ -5201,6 +5208,7 @@ potential_constant_expression_1 (tree t, bool want_rval, bool strict,
return false;
}
/* Fall through. */
+ gcc_fallthrough ();
case IF_STMT:
case VEC_COND_EXPR:
/* If the condition is a known constant, we know which of the legs we
@@ -631,6 +631,7 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
if (TREE_CODE (*expr_p) != INIT_EXPR)
return GS_OK;
/* Otherwise fall through. */
+ gcc_fallthrough ();
case MODIFY_EXPR:
modify_expr_case:
{
@@ -810,6 +811,7 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
goto modify_expr_case;
}
/* Fall through. */
+ gcc_fallthrough ();
default:
ret = (enum gimplify_status) c_gimplify_expr (expr_p, pre_p, post_p);
@@ -1345,6 +1347,7 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data)
case OMP_CLAUSE_DEFAULT:
if (OMP_CLAUSE_DEFAULT_KIND (c) == OMP_CLAUSE_DEFAULT_SHARED)
omp_ctx.default_shared = true;
+ gcc_fallthrough ();
default:
break;
}
@@ -2006,6 +2009,7 @@ cp_fold (tree x)
case VIEW_CONVERT_EXPR:
rval_ops = false;
+ gcc_fallthrough ();
case CONVERT_EXPR:
case NOP_EXPR:
case NON_LVALUE_EXPR:
@@ -2054,6 +2058,7 @@ cp_fold (tree x)
case REALPART_EXPR:
case IMAGPART_EXPR:
rval_ops = false;
+ gcc_fallthrough ();
case CONJ_EXPR:
case FIX_TRUNC_EXPR:
case FLOAT_EXPR:
@@ -2106,6 +2111,7 @@ cp_fold (tree x)
case COMPOUND_EXPR:
case MODIFY_EXPR:
rval_ops = false;
+ gcc_fallthrough ();
case POINTER_PLUS_EXPR:
case PLUS_EXPR:
case MINUS_EXPR:
@@ -210,6 +210,7 @@ cp_ubsan_check_member_access_r (tree *stmt_p, int *walk_subtrees, void *data)
break;
}
/* FALLTHRU */
+ gcc_fallthrough ();
default:
if (ucmd->is_addr && handled_component_p (stmt))
{
@@ -1664,6 +1664,7 @@ build_expr_type_conversion (int desires, tree expr, bool complain)
if ((desires & WANT_NULL) && null_ptr_cst_p (expr))
return expr;
/* else fall through... */
+ gcc_fallthrough ();
case BOOLEAN_TYPE:
return (desires & WANT_INT) ? expr : NULL_TREE;
@@ -139,6 +139,7 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
case OVERLOAD:
t = OVL_CURRENT (t);
+ gcc_fallthrough ();
case VAR_DECL:
case PARM_DECL:
case CONST_DECL:
@@ -150,6 +151,7 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
case USING_DECL:
case TEMPLATE_DECL:
t = DECL_NAME (t);
+ gcc_fallthrough ();
case IDENTIFIER_NODE:
if (t == NULL)
@@ -277,6 +279,7 @@ pp_cxx_qualified_id (cxx_pretty_printer *pp, tree t)
functions and some function templates. */
case OVERLOAD:
t = OVL_CURRENT (t);
+ gcc_fallthrough ();
case FUNCTION_DECL:
if (DECL_FUNCTION_MEMBER_P (t))
pp_cxx_nested_name_specifier (pp, DECL_CONTEXT (t));
@@ -329,6 +332,7 @@ cxx_pretty_printer::constant (tree t)
break;
}
/* else fall through. */
+ gcc_fallthrough ();
default:
c_pretty_printer::constant (t);
@@ -414,6 +418,7 @@ cxx_pretty_printer::primary_expression (tree t)
case BASELINK:
t = BASELINK_FUNCTIONS (t);
+ gcc_fallthrough ();
case VAR_DECL:
case PARM_DECL:
case FIELD_DECL:
@@ -784,6 +789,7 @@ cxx_pretty_printer::unary_expression (tree t)
break;
}
/* Fall through */
+ gcc_fallthrough ();
case ALIGNOF_EXPR:
pp_cxx_ws_string (this, code == SIZEOF_EXPR ? "sizeof" : "__alignof__");
@@ -870,6 +876,7 @@ pp_cxx_pm_expression (cxx_pretty_printer *pp, tree t)
break;
}
/* Else fall through. */
+ gcc_fallthrough ();
case MEMBER_REF:
case DOTSTAR_EXPR:
pp_cxx_pm_expression (pp, TREE_OPERAND (t, 0));
@@ -1054,6 +1061,7 @@ cxx_pretty_printer::expression (tree t)
case OVERLOAD:
t = OVL_CURRENT (t);
+ gcc_fallthrough ();
case VAR_DECL:
case PARM_DECL:
case FIELD_DECL:
@@ -1208,6 +1216,7 @@ cxx_pretty_printer::function_specifier (tree t)
pp_cxx_ws_string (this, "explicit");
else
c_pretty_printer::function_specifier (t);
+ gcc_fallthrough ();
default:
break;
@@ -1250,8 +1259,11 @@ cxx_pretty_printer::declaration_specifiers (tree t)
else if (DECL_NONSTATIC_MEMBER_FUNCTION_P (t))
declaration_specifiers (TREE_TYPE (TREE_TYPE (t)));
else
- default:
- c_pretty_printer::declaration_specifiers (t);
+ {
+ gcc_fallthrough ();
+ default:
+ c_pretty_printer::declaration_specifiers (t);
+ }
break;
}
}
@@ -1348,6 +1360,7 @@ pp_cxx_type_specifier_seq (cxx_pretty_printer *pp, tree t)
break;
}
/* else fall through */
+ gcc_fallthrough ();
default:
if (!(TREE_CODE (t) == FUNCTION_DECL && DECL_CONSTRUCTOR_P (t)))
@@ -1389,6 +1402,7 @@ pp_cxx_ptr_operator (cxx_pretty_printer *pp, tree t)
pp_star (pp);
break;
}
+ gcc_fallthrough ();
case OFFSET_TYPE:
if (TYPE_PTRMEM_P (t))
{
@@ -1400,6 +1414,7 @@ pp_cxx_ptr_operator (cxx_pretty_printer *pp, tree t)
break;
}
/* else fall through. */
+ gcc_fallthrough ();
default:
pp_unsupported_tree (pp, t);
@@ -9446,6 +9446,7 @@ grokdeclarator (const cp_declarator *declarator,
}
}
/* Fall through. */
+ gcc_fallthrough ();
case IDENTIFIER_NODE:
if (identifier_p (decl))
@@ -1687,11 +1687,13 @@ coerce_new_type (tree type)
case 2:
args = tree_cons (NULL_TREE, size_type_node, args);
/* Fall through. */
+ gcc_fallthrough ();
case 1:
type = build_exception_variant
(build_function_type (ptr_type_node, args),
TYPE_RAISES_EXCEPTIONS (type));
/* Fall through. */
+ gcc_fallthrough ();
default:;
}
return type;
@@ -1725,11 +1727,13 @@ coerce_delete_type (tree type)
case 2:
args = tree_cons (NULL_TREE, ptr_type_node, args);
/* Fall through. */
+ gcc_fallthrough ();
case 1:
type = build_exception_variant
(build_function_type (void_type_node, args),
TYPE_RAISES_EXCEPTIONS (type));
/* Fall through. */
+ gcc_fallthrough ();
default:;
}
@@ -253,6 +253,7 @@ cp_dump_tree (void* dump_info, tree t)
return true;
}
/* Fall through. */
+ gcc_fallthrough ();
case UNION_TYPE:
/* Is it a type used as a base? */
@@ -451,6 +451,7 @@ dump_type (cxx_pretty_printer *pp, tree t, int flags)
break;
}
/* Else fall through. */
+ gcc_fallthrough ();
case TEMPLATE_DECL:
case NAMESPACE_DECL:
@@ -576,6 +577,7 @@ dump_type (cxx_pretty_printer *pp, tree t, int flags)
default:
pp_unsupported_tree (pp, t);
/* Fall through to error. */
+ gcc_fallthrough ();
case ERROR_MARK:
pp_string (pp, M_("<type error>"));
@@ -815,6 +817,7 @@ dump_type_prefix (cxx_pretty_printer *pp, tree t, int flags)
default:
pp_unsupported_tree (pp, t);
/* fall through. */
+ gcc_fallthrough ();
case ERROR_MARK:
pp_string (pp, M_("<typeprefixerror>"));
break;
@@ -932,6 +935,7 @@ dump_type_suffix (cxx_pretty_printer *pp, tree t, int flags)
default:
pp_unsupported_tree (pp, t);
+ gcc_fallthrough ();
case ERROR_MARK:
/* Don't mark it here, we should have already done in
dump_type_prefix. */
@@ -1061,6 +1065,7 @@ dump_decl (cxx_pretty_printer *pp, tree t, int flags)
break;
}
/* Else fall through. */
+ gcc_fallthrough ();
case FIELD_DECL:
case PARM_DECL:
dump_simple_decl (pp, t, TREE_TYPE (t), flags);
@@ -1181,6 +1186,7 @@ dump_decl (cxx_pretty_printer *pp, tree t, int flags)
FUNCTION_DECL. */
t = OVL_CURRENT (t);
/* Fall through. */
+ gcc_fallthrough ();
case FUNCTION_DECL:
if (! DECL_LANG_SPECIFIC (t))
@@ -1272,6 +1278,7 @@ dump_decl (cxx_pretty_printer *pp, tree t, int flags)
default:
pp_unsupported_tree (pp, t);
/* Fall through to error. */
+ gcc_fallthrough ();
case ERROR_MARK:
pp_string (pp, M_("<declaration error>"));
@@ -2496,6 +2503,7 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags)
goto cast;
case DYNAMIC_CAST_EXPR:
pp_cxx_ws_string (pp, "dynamic_cast");
+ gcc_fallthrough ();
cast:
pp_cxx_begin_template_argument_list (pp);
dump_type (pp, TREE_TYPE (t), flags);
@@ -2758,6 +2766,7 @@ dump_expr (cxx_pretty_printer *pp, tree t, int flags)
default:
pp_unsupported_tree (pp, t);
/* fall through to ERROR_MARK... */
+ gcc_fallthrough ();
case ERROR_MARK:
pp_string (pp, M_("<expression error>"));
break;
@@ -76,6 +76,7 @@ cplus_expand_constant (tree cst)
unsigned HOST_WIDE_INT idx;
FOR_EACH_VEC_SAFE_ELT (CONSTRUCTOR_ELTS (cst), idx, elt)
elt->value = cplus_expand_constant (elt->value);
+ gcc_fallthrough ();
}
default:
@@ -2052,6 +2052,7 @@ write_type (tree type)
break;
}
/* else fall through. */
+ gcc_fallthrough ();
case TEMPLATE_PARM_INDEX:
write_template_param (type);
break;
@@ -3074,6 +3075,7 @@ write_expression (tree expr)
if (abi_warn_or_compat_version_crosses (6))
G.need_abi_warning = 1;
/* Fall through. */
+ gcc_fallthrough ();
default:
/* In the middle-end, some expressions have more operands than
@@ -1402,6 +1402,7 @@ synthesized_method_walk (tree ctype, special_function_kind sfk, bool const_p,
case sfk_move_constructor:
case sfk_move_assignment:
move_p = true;
+ gcc_fallthrough ();
case sfk_copy_constructor:
case sfk_copy_assignment:
copy_arg_p = true;
@@ -1575,6 +1575,7 @@ begin_scope (scope_kind kind, tree entity)
scope->explicit_spec_p = true;
kind = sk_template_parms;
/* Fall through. */
+ gcc_fallthrough ();
case sk_template_parms:
case sk_block:
case sk_try:
@@ -5547,6 +5548,7 @@ arg_assoc_type (struct arg_lookup *k, tree type)
case RECORD_TYPE:
if (TYPE_PTRMEMFUNC_P (type))
return arg_assoc_type (k, TYPE_PTRMEMFUNC_FN_TYPE (type));
+ gcc_fallthrough ();
case UNION_TYPE:
return arg_assoc_class (k, type);
case POINTER_TYPE:
@@ -1258,6 +1258,7 @@ cp_lexer_print_token (FILE * stream, cp_token *token)
if (!identifier_p (token->u.value))
break;
/* else fall through */
+ gcc_fallthrough ();
case CPP_NAME:
fputs (IDENTIFIER_POINTER (token->u.value), stream);
break;
@@ -3467,6 +3468,7 @@ cp_parser_skip_to_end_of_statement (cp_parser* parser)
cp_lexer_consume_token (parser->lexer);
return;
}
+ gcc_fallthrough ();
case CPP_OPEN_BRACE:
++nesting_depth;
@@ -5118,6 +5120,7 @@ cp_parser_primary_expression (cp_parser *parser,
cp_parser_skip_to_end_of_block_or_statement (parser);
return error_mark_node;
}
+ gcc_fallthrough ();
default:
cp_parser_error (parser, "expected primary-expression");
return error_mark_node;
@@ -5447,6 +5450,7 @@ cp_parser_id_expression (cp_parser *parser,
if (token->keyword == RID_OPERATOR)
return cp_parser_operator_function_id (parser);
/* Fall through. */
+ gcc_fallthrough ();
default:
cp_parser_error (parser, "expected id-expression");
@@ -5778,6 +5782,7 @@ cp_parser_unqualified_id (cp_parser* parser,
return id;
}
/* Fall through. */
+ gcc_fallthrough ();
default:
if (optional_p)
@@ -7935,6 +7940,7 @@ cp_parser_unary_expression (cp_parser *parser, cp_id_kind * pidk,
case ADDR_EXPR:
non_constant_p = NIC_ADDR;
/* Fall through. */
+ gcc_fallthrough ();
case BIT_NOT_EXPR:
expression = build_x_unary_op (loc, unary_operator,
cast_expression,
@@ -7949,6 +7955,7 @@ cp_parser_unary_expression (cp_parser *parser, cp_id_kind * pidk,
non_constant_p = unary_operator == PREINCREMENT_EXPR
? NIC_PREINCREMENT : NIC_PREDECREMENT;
/* Fall through. */
+ gcc_fallthrough ();
case NEGATE_EXPR:
/* Immediately fold negation of a constant, unless the constant is 0
(since -0 == 0) or it would overflow. */
@@ -7967,6 +7974,7 @@ cp_parser_unary_expression (cp_parser *parser, cp_id_kind * pidk,
}
}
/* Fall through. */
+ gcc_fallthrough ();
case UNARY_PLUS_EXPR:
case TRUTH_NOT_EXPR:
expression = finish_unary_op_expr (loc, unary_operator,
@@ -9410,6 +9418,7 @@ cp_parser_builtin_offsetof (cp_parser *parser)
expr = grok_array_decl (token->location, expr,
integer_zero_node, false);
/* FALLTHRU */
+ gcc_fallthrough ();
case CPP_DOT:
/* offsetof-member-designator "." identifier */
@@ -11777,6 +11786,7 @@ cp_parser_jump_statement (cp_parser* parser)
error_at (token->location,
"continue statement within %<#pragma simd%> loop body");
/* Fall through. */
+ gcc_fallthrough ();
case IN_ITERATION_STMT:
case IN_OMP_FOR:
statement = finish_continue_stmt ();
@@ -12854,6 +12864,7 @@ cp_parser_storage_class_specifier_opt (cp_parser* parser)
if (cxx_dialect != cxx98)
return NULL_TREE;
/* Fall through for C++98. */
+ gcc_fallthrough ();
case RID_REGISTER:
case RID_STATIC:
@@ -13973,6 +13984,7 @@ cp_parser_operator (cp_parser* parser)
case CPP_UTF8STRING:
case CPP_UTF8STRING_USERDEF:
utf8 = true;
+ gcc_fallthrough ();
case CPP_STRING:
case CPP_WSTRING:
case CPP_STRING16:
@@ -15854,12 +15866,14 @@ cp_parser_type_specifier (cp_parser* parser,
}
/* Fall through. */
+ gcc_fallthrough ();
elaborated_type_specifier:
/* We're declaring (not defining) a class or enum. */
if (declares_class_or_enum)
*declares_class_or_enum = 1;
/* Fall through. */
+ gcc_fallthrough ();
case RID_TYPENAME:
/* Look for an elaborated-type-specifier. */
type_spec
@@ -27083,6 +27097,7 @@ cp_parser_skip_to_end_of_template_parameter_list (cp_parser* parser)
}
/* Fall through for C++0x, so we handle the second `>' in
the `>>'. */
+ gcc_fallthrough ();
case CPP_GREATER:
if (!nesting_depth && level-- == 0)
@@ -27500,6 +27515,7 @@ cp_parser_cache_defarg (cp_parser *parser, bool nsdmi)
parser->in_template_argument_list_p = saved_italp;
break;
}
+ gcc_fallthrough ();
case CPP_CLOSE_PAREN:
case CPP_ELLIPSIS:
/* If we run into a non-nested `;', `}', or `]',
@@ -27538,6 +27554,7 @@ cp_parser_cache_defarg (cp_parser *parser, bool nsdmi)
/* Fall through for C++0x, which treats the `>>'
operator like two `>' tokens in certain
cases. */
+ gcc_fallthrough ();
case CPP_GREATER:
if (depth == 0)
@@ -29068,6 +29085,7 @@ cp_parser_objc_declaration (cp_parser* parser, tree attributes)
"prefix attributes are ignored before %<@%D%>",
kwd->u.value);
attributes = NULL;
+ gcc_fallthrough ();
default:
break;
}
@@ -30010,6 +30028,7 @@ cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind,
break;
}
/* FALLTHROUGH. */
+ gcc_fallthrough ();
case OMP_CLAUSE_MAP:
case OMP_CLAUSE_FROM:
case OMP_CLAUSE_TO:
@@ -30026,6 +30045,7 @@ cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind,
&idk, loc);
}
/* FALLTHROUGH. */
+ gcc_fallthrough ();
case OMP_CLAUSE_DEPEND:
case OMP_CLAUSE_REDUCTION:
while (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_SQUARE))
@@ -32807,6 +32827,7 @@ cp_parser_omp_atomic (cp_parser *parser, cp_token *pragma_tok)
if (!cp_parser_require (parser, CPP_EQ, RT_EQ))
goto saw_error;
}
+ gcc_fallthrough ();
default:
break;
}
@@ -32823,6 +32844,7 @@ restart:
if (code == OMP_ATOMIC_CAPTURE_NEW && !structured_block)
code = OMP_ATOMIC_CAPTURE_OLD;
/* FALLTHROUGH */
+ gcc_fallthrough ();
case PREINCREMENT_EXPR:
lhs = TREE_OPERAND (lhs, 0);
opcode = PLUS_EXPR;
@@ -32833,6 +32855,7 @@ restart:
if (code == OMP_ATOMIC_CAPTURE_NEW && !structured_block)
code = OMP_ATOMIC_CAPTURE_OLD;
/* FALLTHROUGH */
+ gcc_fallthrough ();
case PREDECREMENT_EXPR:
lhs = TREE_OPERAND (lhs, 0);
opcode = MINUS_EXPR;
@@ -32850,6 +32873,7 @@ restart:
/* Undo effects of boolean_increment for post {in,de}crement. */
lhs = TREE_OPERAND (TREE_OPERAND (lhs, 1), 0);
/* FALLTHRU */
+ gcc_fallthrough ();
case MODIFY_EXPR:
if (TREE_CODE (lhs) == MODIFY_EXPR
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (lhs, 0))) == BOOLEAN_TYPE)
@@ -32869,6 +32893,7 @@ restart:
}
}
/* FALLTHRU */
+ gcc_fallthrough ();
default:
switch (cp_lexer_peek_token (parser->lexer)->type)
{
@@ -33035,6 +33060,7 @@ restart:
goto saw_error;
goto stmt_done;
/* FALLTHROUGH */
+ gcc_fallthrough ();
default:
cp_parser_error (parser,
"invalid operator for %<#pragma omp atomic%>");
@@ -33180,6 +33206,7 @@ cp_parser_omp_for_cond (cp_parser *parser, tree decl, enum tree_code code)
if (code == CILK_SIMD || code == CILK_FOR)
break;
/* Fall through: OpenMP disallows NE_EXPR. */
+ gcc_fallthrough ();
default:
return error_mark_node;
}
@@ -2689,6 +2689,7 @@ check_explicit_specialization (tree declarator,
error ("template parameter list used in explicit instantiation");
/* Fall through. */
+ gcc_fallthrough ();
case tsk_expl_inst:
if (have_def)
@@ -2709,6 +2710,7 @@ check_explicit_specialization (tree declarator,
"%<template <>%>", decl);
/* Fall through. */
+ gcc_fallthrough ();
case tsk_expl_spec:
if (is_concept)
error ("explicit specialization declared %<concept%>");
@@ -3453,6 +3455,7 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
case TEMPLATE_TYPE_PARM:
t = TYPE_MAIN_VARIANT (t);
+ gcc_fallthrough ();
case TEMPLATE_TEMPLATE_PARM:
/* If the placeholder appears in the decl-specifier-seq of a function
parameter pack (14.6.3), or the type-specifier-seq of a type-id that
@@ -3540,6 +3543,7 @@ find_parameter_packs_r (tree *tp, int *walk_subtrees, void* data)
if (TYPE_PTRMEMFUNC_P (t))
return NULL_TREE;
/* Fall through. */
+ gcc_fallthrough ();
case UNION_TYPE:
case ENUMERAL_TYPE:
@@ -6748,6 +6752,7 @@ coerce_template_template_parm (tree parm,
return 0;
}
/* Fall through. */
+ gcc_fallthrough ();
case TYPE_DECL:
if (TEMPLATE_TYPE_PARAMETER_PACK (TREE_TYPE (arg))
@@ -8794,6 +8799,7 @@ for_each_template_parm_r (tree *tp, int *walk_subtrees, void *d)
if (TYPE_PTRMEMFUNC_P (t))
break;
/* Fall through. */
+ gcc_fallthrough ();
case UNION_TYPE:
case ENUMERAL_TYPE:
@@ -8813,6 +8819,7 @@ for_each_template_parm_r (tree *tp, int *walk_subtrees, void *d)
explicitly here. */
WALK_SUBTREE (TYPE_METHOD_BASETYPE (t));
/* Fall through. */
+ gcc_fallthrough ();
case FUNCTION_TYPE:
/* Check the return type. */
@@ -8850,6 +8857,7 @@ for_each_template_parm_r (tree *tp, int *walk_subtrees, void *d)
if (DECL_LANG_SPECIFIC (t) && DECL_TEMPLATE_INFO (t))
WALK_SUBTREE (DECL_TI_ARGS (t));
/* Fall through. */
+ gcc_fallthrough ();
case PARM_DECL:
case CONST_DECL:
@@ -8864,6 +8872,7 @@ for_each_template_parm_r (tree *tp, int *walk_subtrees, void *d)
/* Record template parameters such as `T' inside `TT<T>'. */
WALK_SUBTREE (TYPE_TI_ARGS (t));
/* Fall through. */
+ gcc_fallthrough ();
case TEMPLATE_TEMPLATE_PARM:
case TEMPLATE_TYPE_PARM:
@@ -11435,6 +11444,7 @@ tsubst_aggr_type (tree t,
return tsubst (TYPE_PTRMEMFUNC_FN_TYPE (t), args, complain, in_decl);
/* Else fall through. */
+ gcc_fallthrough ();
case ENUMERAL_TYPE:
case UNION_TYPE:
if (TYPE_TEMPLATE_INFO (t) && uses_template_parms (t))
@@ -14246,6 +14256,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
return r;
}
/* Fall through */
+ gcc_fallthrough ();
case INDIRECT_REF:
case NEGATE_EXPR:
@@ -14464,6 +14475,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case USING_DECL:
t = DECL_NAME (t);
/* Fall through. */
+ gcc_fallthrough ();
case IDENTIFIER_NODE:
if (IDENTIFIER_TYPENAME_P (t))
{
@@ -14621,6 +14633,7 @@ tsubst_omp_clauses (tree clauses, enum c_omp_region_type ort,
= pop_stmt_list (OMP_CLAUSE_LASTPRIVATE_STMT (nc));
}
/* FALLTHRU */
+ gcc_fallthrough ();
case OMP_CLAUSE_PRIVATE:
case OMP_CLAUSE_SHARED:
case OMP_CLAUSE_FIRSTPRIVATE:
@@ -14783,6 +14796,7 @@ tsubst_omp_clauses (tree clauses, enum c_omp_region_type ort,
&& DECL_NAME (v) == this_identifier)
OMP_CLAUSE_DECL (nc) = TREE_OPERAND (t, 1);
/* FALLTHRU */
+ gcc_fallthrough ();
default:
v = NULL_TREE;
break;
@@ -14933,6 +14947,7 @@ tsubst_omp_for_iterator (tree t, int i, tree declv, tree orig_declv,
decl = omp_privatize_field (decl, false);
}
/* FALLTHRU */
+ gcc_fallthrough ();
default:
v = NULL_TREE;
break;
@@ -15618,6 +15633,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
case OMP_SECTIONS:
omp_parallel_combined_clauses = NULL;
/* FALLTHRU */
+ gcc_fallthrough ();
case OMP_SINGLE:
case OMP_TEAMS:
case OMP_CRITICAL:
@@ -16001,6 +16017,7 @@ tsubst_copy_and_build (tree t,
case USING_DECL:
t = DECL_NAME (t);
/* Fall through. */
+ gcc_fallthrough ();
case IDENTIFIER_NODE:
{
tree decl;
@@ -16294,6 +16311,7 @@ tsubst_copy_and_build (tree t,
|| ARGUMENT_PACK_P (TREE_OPERAND (t, 0)))
RETURN (tsubst_copy (t, args, complain, in_decl));
/* Fall through */
+ gcc_fallthrough ();
case ALIGNOF_EXPR:
{
@@ -17067,6 +17085,7 @@ tsubst_copy_and_build (tree t,
return RECUR (DECL_VALUE_EXPR (t));
}
/* Fall through */
+ gcc_fallthrough ();
case PARM_DECL:
{
@@ -20206,12 +20225,14 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict,
strict, explain_p);
}
/* FALLTHRU */
+ gcc_fallthrough ();
default:
/* An unresolved overload is a nondeduced context. */
if (is_overloaded_fn (parm) || type_unknown_p (parm))
return unify_success (explain_p);
gcc_assert (EXPR_P (parm));
+ gcc_fallthrough ();
expr:
/* We must be looking at an expression. This can happen with
something like:
@@ -22808,6 +22829,7 @@ value_dependent_expression_p (tree expression)
if (SIZEOF_EXPR_TYPE_P (expression))
return dependent_type_p (TREE_TYPE (TREE_OPERAND (expression, 0)));
/* FALLTHRU */
+ gcc_fallthrough ();
case ALIGNOF_EXPR:
case TYPEID_EXPR:
/* A `sizeof' expression is value-dependent if the operand is
@@ -539,6 +539,7 @@ build_dynamic_cast_1 (tree type, tree expr, tsubst_flags_t complain)
if (VOID_TYPE_P (TREE_TYPE (type)))
break;
/* Fall through. */
+ gcc_fallthrough ();
case REFERENCE_TYPE:
if (! MAYBE_CLASS_TYPE_P (TREE_TYPE (type)))
{
@@ -852,9 +853,11 @@ involves_incomplete_p (tree type)
if (TYPE_PTRMEMFUNC_P (type))
goto ptrmem;
/* Fall through. */
+ gcc_fallthrough ();
case UNION_TYPE:
if (!COMPLETE_TYPE_P (type))
return true;
+ gcc_fallthrough ();
default:
/* All other types do not involve incomplete class types. */
@@ -6007,6 +6007,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
}
else
t = OMP_CLAUSE_DECL (c);
+ gcc_fallthrough ();
check_dup_generic_t:
if (t == current_class_ptr
&& (ort != C_ORT_OMP_DECLARE_SIMD
@@ -6062,6 +6063,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
bitmap_set_bit (&generic_head, DECL_UID (t));
if (!field_ok)
break;
+ gcc_fallthrough ();
handle_field_decl:
if (!remove
&& TREE_CODE (t) == FIELD_DECL
@@ -6208,11 +6210,13 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
OMP_CLAUSE_OPERAND (c, 1) = t;
}
/* Check operand 0, the num argument. */
+ gcc_fallthrough ();
case OMP_CLAUSE_WORKER:
case OMP_CLAUSE_VECTOR:
if (OMP_CLAUSE_OPERAND (c, 0) == NULL_TREE)
break;
+ gcc_fallthrough ();
case OMP_CLAUSE_NUM_TASKS:
case OMP_CLAUSE_NUM_TEAMS:
@@ -6814,6 +6818,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
&& TREE_CODE (OMP_CLAUSE_DECL (c)) == COMPONENT_REF)
bitmap_set_bit (&map_field_head, DECL_UID (t));
}
+ gcc_fallthrough ();
handle_map_references:
if (!remove
&& !processing_template_decl
@@ -7210,6 +7215,7 @@ finish_omp_clauses (tree clauses, enum c_omp_region_type ort)
continue;
}
/* FALLTHRU */
+ gcc_fallthrough ();
default:
pc = &OMP_CLAUSE_CHAIN (c);
continue;
@@ -8875,6 +8881,7 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p,
break;
}
/* Fall through for fields that aren't bitfields. */
+ gcc_fallthrough ();
case FUNCTION_DECL:
case VAR_DECL:
@@ -141,11 +141,13 @@ lvalue_kind (const_tree ref)
lvalues. */
if (! TREE_STATIC (ref))
return clk_none;
+ gcc_fallthrough ();
case VAR_DECL:
if (TREE_READONLY (ref) && ! TREE_STATIC (ref)
&& DECL_LANG_SPECIFIC (ref)
&& DECL_IN_AGGR_P (ref))
return clk_none;
+ gcc_fallthrough ();
case INDIRECT_REF:
case ARROW_EXPR:
case ARRAY_REF:
@@ -1708,6 +1710,7 @@ strip_typedefs_expr (tree t, bool *remove_attributes)
case NEW_EXPR:
type = strip_typedefs (type, remove_attributes);
/* fallthrough */
+ gcc_fallthrough ();
default:
for (i = 0; i < n; ++i)
@@ -2343,10 +2346,12 @@ no_linkage_check (tree t, bool relaxed_p)
&& LAMBDA_TYPE_EXTRA_SCOPE (t) == NULL_TREE)
return t;
/* Fall through. */
+ gcc_fallthrough ();
case UNION_TYPE:
if (!CLASS_TYPE_P (t))
return NULL_TREE;
/* Fall through. */
+ gcc_fallthrough ();
case ENUMERAL_TYPE:
/* Only treat anonymous types as having no linkage if they're at
namespace scope. This is core issue 966. */
@@ -2548,6 +2553,7 @@ bot_manip (tree* tp, int* walk_subtrees, void* data)
case BUILT_IN_FILE:
case BUILT_IN_LINE:
SET_EXPR_LOCATION (*tp, input_location);
+ gcc_fallthrough ();
default:
break;
}
@@ -1278,6 +1278,7 @@ structural_comptypes (tree t1, tree t2, int strict)
/* Don't check inheritance. */
strict = COMPARE_STRICT;
/* Fall through. */
+ gcc_fallthrough ();
case RECORD_TYPE:
case UNION_TYPE:
@@ -1306,6 +1307,7 @@ structural_comptypes (tree t1, tree t2, int strict)
if (TYPE_REF_IS_RVALUE (t1) != TYPE_REF_IS_RVALUE (t2))
return false;
/* fall through to checks for pointer types */
+ gcc_fallthrough ();
case POINTER_TYPE:
if (TYPE_MODE (t1) != TYPE_MODE (t2)
@@ -1884,6 +1886,7 @@ is_bitfield_expr_with_lowered_type (const_tree exp)
== TYPE_MAIN_VARIANT (TREE_TYPE (exp)))
return is_bitfield_expr_with_lowered_type (TREE_OPERAND (exp, 0));
/* Fallthrough. */
+ gcc_fallthrough ();
default:
return NULL_TREE;
@@ -4260,6 +4263,7 @@ cp_build_binary_op (location_t location,
}
/* The pointer - int case is just like pointer + int; fall
through. */
+ gcc_fallthrough ();
case PLUS_EXPR:
if ((code0 == POINTER_TYPE || code1 == POINTER_TYPE)
&& (code0 == INTEGER_TYPE || code1 == INTEGER_TYPE))
@@ -5040,6 +5044,7 @@ cp_build_binary_op (location_t location,
op1 = save_expr (op1);
imag = build2 (resultcode, real_type, imag, op1);
/* Fall through. */
+ gcc_fallthrough ();
case PLUS_EXPR:
case MINUS_EXPR:
real = build2 (resultcode, real_type, real, op1);
@@ -5059,6 +5064,7 @@ cp_build_binary_op (location_t location,
op0 = save_expr (op0);
imag = build2 (resultcode, real_type, op0, imag);
/* Fall through. */
+ gcc_fallthrough ();
case PLUS_EXPR:
real = build2 (resultcode, real_type, op0, real);
break;
@@ -5693,6 +5699,7 @@ cp_build_addr_expr_1 (tree arg, bool strict_lvalue, tsubst_flags_t complain)
case BASELINK:
arg = BASELINK_FUNCTIONS (arg);
/* Fall through. */
+ gcc_fallthrough ();
case OVERLOAD:
arg = OVL_CURRENT (arg);
@@ -6222,6 +6229,7 @@ cxx_mark_addressable (tree exp)
return true;
}
/* Fall through. */
+ gcc_fallthrough ();
case VAR_DECL:
/* Caller should not be trying to mark initialized
@@ -6231,6 +6239,7 @@ cxx_mark_addressable (tree exp)
|| TREE_STATIC (x)
|| DECL_EXTERNAL (x));
/* Fall through. */
+ gcc_fallthrough ();
case RESULT_DECL:
if (DECL_REGISTER (x) && !TREE_ADDRESSABLE (x)
@@ -7555,6 +7564,7 @@ cp_build_modify_expr (location_t loc, tree lhs, enum tree_code modifycode,
TREE_OPERAND (lhs, 0),
TREE_OPERAND (lhs, 1));
/* Fall through. */
+ gcc_fallthrough ();
/* Handle (a ? b : c) used as an "lvalue". */
case COND_EXPR:
@@ -612,6 +612,7 @@ split_nonconstant_init_1 (tree dest, tree init)
return true;
}
/* FALLTHRU */
+ gcc_fallthrough ();
case RECORD_TYPE:
case UNION_TYPE: