@@ -4824,6 +4824,7 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
mod_inner = d_left (sub);
}
/* Fall through. */
+ D_FALLTHRU ();
case DEMANGLE_COMPONENT_RESTRICT_THIS:
case DEMANGLE_COMPONENT_VOLATILE_THIS:
@@ -5634,11 +5635,13 @@ d_print_mod (struct d_print_info *dpi, int options,
case DEMANGLE_COMPONENT_REFERENCE_THIS:
/* For the ref-qualifier, put a space before the &. */
d_append_char (dpi, ' ');
+ D_FALLTHRU ();
case DEMANGLE_COMPONENT_REFERENCE:
d_append_char (dpi, '&');
return;
case DEMANGLE_COMPONENT_RVALUE_REFERENCE_THIS:
d_append_char (dpi, ' ');
+ D_FALLTHRU ();
case DEMANGLE_COMPONENT_RVALUE_REFERENCE:
d_append_string (dpi, "&&");
return;
@@ -1642,6 +1642,7 @@ demangle_signature (struct work_stuff *work,
else
/* fall through */
{;}
+ D_FALLTHRU ();
default:
if (AUTO_DEMANGLING || GNU_DEMANGLING)
@@ -3992,6 +3993,8 @@ demangle_fund_type (struct work_stuff *work,
success = 0;
break;
}
+ /* XXX Really fallthru? */
+ D_FALLTHRU ();
case 'I':
(*mangled)++;
if (**mangled == '_')
@@ -4086,7 +4089,8 @@ do_hpacc_template_const_value (struct work_stuff *work ATTRIBUTE_UNUSED,
{
case 'N':
string_append (result, "-");
- /* fall through */
+ /* fall through */
+ D_FALLTHRU ();
case 'P':
(*mangled)++;
break;
@@ -1244,6 +1244,7 @@ dlang_value (string *decl, const char *mangled, const char *name, char type)
if (*mangled < '0' || *mangled > '9')
return NULL;
/* Fall through */
+ D_FALLTHRU ();
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
mangled = dlang_parse_integer (decl, mangled, type);
@@ -962,18 +962,18 @@ iterative_hash (const PTR k_in /* the key */,
c += length;
switch(len) /* all the case statements fall through */
{
- case 11: c+=((hashval_t)k[10]<<24);
- case 10: c+=((hashval_t)k[9]<<16);
- case 9 : c+=((hashval_t)k[8]<<8);
+ case 11: c+=((hashval_t)k[10]<<24); D_FALLTHRU ();
+ case 10: c+=((hashval_t)k[9]<<16); D_FALLTHRU ();
+ case 9 : c+=((hashval_t)k[8]<<8); D_FALLTHRU ();
/* the first byte of c is reserved for the length */
- case 8 : b+=((hashval_t)k[7]<<24);
- case 7 : b+=((hashval_t)k[6]<<16);
- case 6 : b+=((hashval_t)k[5]<<8);
- case 5 : b+=k[4];
- case 4 : a+=((hashval_t)k[3]<<24);
- case 3 : a+=((hashval_t)k[2]<<16);
- case 2 : a+=((hashval_t)k[1]<<8);
- case 1 : a+=k[0];
+ case 8 : b+=((hashval_t)k[7]<<24); D_FALLTHRU ();
+ case 7 : b+=((hashval_t)k[6]<<16); D_FALLTHRU ();
+ case 6 : b+=((hashval_t)k[5]<<8); D_FALLTHRU ();
+ case 5 : b+=k[4]; D_FALLTHRU ();
+ case 4 : a+=((hashval_t)k[3]<<24); D_FALLTHRU ();
+ case 3 : a+=((hashval_t)k[2]<<16); D_FALLTHRU ();
+ case 2 : a+=((hashval_t)k[1]<<8); D_FALLTHRU ();
+ case 1 : a+=k[0]; D_FALLTHRU ();
/* case 0: nothing left to add */
}
mix(a,b,c);
@@ -1368,6 +1368,12 @@ static const char *re_error_msgid[] =
#endif /* INSIDE_RECURSION */
+#if __GNUC__ >= 7
+# define FALLTHRU() __builtin_fallthrough ()
+#else
+# define FALLTHRU()
+#endif
+
#ifndef DEFINED_ONCE
/* Avoiding alloca during matching, to placate r_alloc. */
@@ -2493,6 +2499,7 @@ PREFIX(regex_compile) (const char *ARG_PREFIX(pattern),
if ((syntax & RE_BK_PLUS_QM)
|| (syntax & RE_LIMITED_OPS))
goto normal_char;
+ FALLTHRU ();
handle_plus:
case '*':
/* If there is no previous pattern... */
@@ -3654,6 +3661,7 @@ PREFIX(regex_compile) (const char *ARG_PREFIX(pattern),
case '(':
if (syntax & RE_NO_BK_PARENS)
goto normal_backslash;
+ FALLTHRU ();
handle_open:
bufp->re_nsub++;
@@ -3711,6 +3719,7 @@ PREFIX(regex_compile) (const char *ARG_PREFIX(pattern),
else
FREE_STACK_RETURN (REG_ERPAREN);
}
+ FALLTHRU ();
handle_close:
if (fixup_alt_jump)
@@ -3774,6 +3783,7 @@ PREFIX(regex_compile) (const char *ARG_PREFIX(pattern),
case '|': /* `\|'. */
if (syntax & RE_LIMITED_OPS || syntax & RE_NO_BK_VBAR)
goto normal_backslash;
+ FALLTHRU ();
handle_alt:
if (syntax & RE_LIMITED_OPS)
goto normal_char;
@@ -3824,6 +3834,7 @@ PREFIX(regex_compile) (const char *ARG_PREFIX(pattern),
operator. */
|| (syntax & RE_NO_BK_BRACES))
goto normal_backslash;
+ FALLTHRU ();
handle_interval:
{
@@ -6697,6 +6708,7 @@ byte_re_match_2_internal (struct re_pattern_buffer *bufp,
{
case jump_n:
is_a_jump_n = true;
+ FALLTHRU ();
case pop_failure_jump:
case maybe_pop_jump:
case jump:
@@ -7126,7 +7138,7 @@ byte_re_match_2_internal (struct re_pattern_buffer *bufp,
goto unconditional_jump;
}
/* Note fall through. */
-
+ FALLTHRU ();
/* The end of a simple repeat has a pop_failure_jump back to
its matching on_failure_jump, where the latter will push a
@@ -7151,6 +7163,7 @@ byte_re_match_2_internal (struct re_pattern_buffer *bufp,
reg_dummy, reg_dummy, reg_info_dummy);
}
/* Note fall through. */
+ FALLTHRU ();
unconditional_jump:
#ifdef _LIBC
@@ -7453,6 +7466,7 @@ byte_re_match_2_internal (struct re_pattern_buffer *bufp,
{
case jump_n:
is_a_jump_n = true;
+ FALLTHRU ();
case maybe_pop_jump:
case pop_failure_jump:
case jump:
@@ -7718,6 +7732,7 @@ PREFIX(common_op_match_null_string_p) (UCHAR_T **p, UCHAR_T *end,
case set_number_at:
p1 += 2 * OFFSET_ADDRESS_SIZE;
+ FALLTHRU ();
default:
/* All other opcodes mean we cannot match the empty string. */