Skip to content

bpo-30923: Silence fall-through warnings included in -Wextra since gc… #3157

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 21, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Modules/_ctypes/_ctypes.c
Original file line number Diff line number Diff line change
Expand Up @@ -3614,7 +3614,7 @@ _build_callargs(PyCFuncPtrObject *self, PyObject *argtypes,
case (PARAMFLAG_FIN | PARAMFLAG_FOUT):
*pinoutmask |= (1 << i); /* mark as inout arg */
(*pnumretvals)++;
/* fall through to PARAMFLAG_FIN... */
/* fall through */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why existing comments are shortened?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gcc only recognizes "fall through" (and a couple of other versions), but not that comment with additional words.

I only changed comments that aren't recognized.

case 0:
case PARAMFLAG_FIN:
/* 'in' parameter. Copy it from inargs. */
Expand Down
4 changes: 2 additions & 2 deletions Objects/call.c
Original file line number Diff line number Diff line change
Expand Up @@ -499,7 +499,7 @@ _PyMethodDef_RawFastCallDict(PyMethodDef *method, PyObject *self, PyObject **arg
if (kwargs != NULL && PyDict_GET_SIZE(kwargs) != 0) {
goto no_keyword_error;
}
/* fall through next case */
/* fall through */

case METH_VARARGS | METH_KEYWORDS:
{
Expand Down Expand Up @@ -656,7 +656,7 @@ _PyMethodDef_RawFastCallKeywords(PyMethodDef *method, PyObject *self, PyObject *
if (nkwargs) {
goto no_keyword_error;
}
/* fall through next case */
/* fall through */

case METH_VARARGS | METH_KEYWORDS:
{
Expand Down
4 changes: 2 additions & 2 deletions Objects/stringlib/codecs.h
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ STRINGLIB(utf8_encoder)(PyObject *unicode,
case _Py_ERROR_REPLACE:
memset(p, '?', endpos - startpos);
p += (endpos - startpos);
/* fall through the ignore handler */
/* fall through */
case _Py_ERROR_IGNORE:
i += (endpos - startpos - 1);
break;
Expand Down Expand Up @@ -378,7 +378,7 @@ STRINGLIB(utf8_encoder)(PyObject *unicode,
}
startpos = k;
assert(startpos < endpos);
/* fall through the default handler */
/* fall through */
default:
rep = unicode_encode_call_errorhandler(
errors, &error_handler_obj, "utf-8", "surrogates not allowed",
Expand Down
5 changes: 3 additions & 2 deletions Objects/unicodeobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -1794,6 +1794,7 @@ unicode_dealloc(PyObject *unicode)

case SSTATE_INTERNED_IMMORTAL:
Py_FatalError("Immortal interned string died.");
/* fall through */

default:
Py_FatalError("Inconsistent interned string state.");
Expand Down Expand Up @@ -6778,7 +6779,7 @@ unicode_encode_ucs1(PyObject *unicode,
case _Py_ERROR_REPLACE:
memset(str, '?', collend - collstart);
str += (collend - collstart);
/* fall through ignore error handler */
/* fall through */
case _Py_ERROR_IGNORE:
pos = collend;
break;
Expand Down Expand Up @@ -6817,7 +6818,7 @@ unicode_encode_ucs1(PyObject *unicode,
break;
collstart = pos;
assert(collstart != collend);
/* fallback to general error handling */
/* fall through */

default:
rep = unicode_encode_call_errorhandler(errors, &error_handler_obj,
Expand Down
3 changes: 3 additions & 0 deletions Python/ast.c
Original file line number Diff line number Diff line change
Expand Up @@ -1182,6 +1182,7 @@ ast_for_comp_op(struct compiling *c, const node *n)
return In;
if (strcmp(STR(n), "is") == 0)
return Is;
/* fall through */
default:
PyErr_Format(PyExc_SystemError, "invalid comp_op: %s",
STR(n));
Expand All @@ -1196,6 +1197,7 @@ ast_for_comp_op(struct compiling *c, const node *n)
return NotIn;
if (strcmp(STR(CHILD(n, 0)), "is") == 0)
return IsNot;
/* fall through */
default:
PyErr_Format(PyExc_SystemError, "invalid comp_op: %s %s",
STR(CHILD(n, 0)), STR(CHILD(n, 1)));
Expand Down Expand Up @@ -3147,6 +3149,7 @@ ast_for_flow_stmt(struct compiling *c, const node *n)
}
return Raise(expression, cause, LINENO(n), n->n_col_offset, c->c_arena);
}
/* fall through */
default:
PyErr_Format(PyExc_SystemError,
"unexpected flow_stmt: %d", TYPE(ch));
Expand Down
4 changes: 3 additions & 1 deletion Python/ceval.c
Original file line number Diff line number Diff line change
Expand Up @@ -1807,9 +1807,11 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
switch (oparg) {
case 2:
cause = POP(); /* cause */
/* fall through */
case 1:
exc = POP(); /* exc */
case 0: /* Fallthrough */
/* fall through */
case 0:
if (do_raise(exc, cause)) {
why = WHY_EXCEPTION;
goto fast_block_end;
Expand Down
5 changes: 3 additions & 2 deletions Python/compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -4154,6 +4154,7 @@ expr_constant(struct compiler *c, expr_ty e)
else if (o == Py_False)
return 0;
}
/* fall through */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't be better to move this comment one line up, inside a block, and align it with if and else? And add "else" before "fall through".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, but gcc doesn't recognize that. It's pretty inflexible.

default:
return -1;
}
Expand Down Expand Up @@ -4446,13 +4447,13 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
switch (e->v.Attribute.ctx) {
case AugLoad:
ADDOP(c, DUP_TOP);
/* Fall through to load */
/* Fall through */
case Load:
ADDOP_NAME(c, LOAD_ATTR, e->v.Attribute.attr, names);
break;
case AugStore:
ADDOP(c, ROT_TWO);
/* Fall through to save */
/* Fall through */
case Store:
ADDOP_NAME(c, STORE_ATTR, e->v.Attribute.attr, names);
break;
Expand Down
8 changes: 4 additions & 4 deletions Python/dtoa.c
Original file line number Diff line number Diff line change
Expand Up @@ -1454,7 +1454,7 @@ _Py_dg_strtod(const char *s00, char **se)
switch (c) {
case '-':
sign = 1;
/* no break */
/* fall through */
case '+':
c = *++s;
}
Expand Down Expand Up @@ -1523,7 +1523,7 @@ _Py_dg_strtod(const char *s00, char **se)
switch (c) {
case '-':
esign = 1;
/* no break */
/* fall through */
case '+':
c = *++s;
}
Expand Down Expand Up @@ -2441,15 +2441,15 @@ _Py_dg_dtoa(double dd, int mode, int ndigits,
break;
case 2:
leftright = 0;
/* no break */
/* fall through */
case 4:
if (ndigits <= 0)
ndigits = 1;
ilim = ilim1 = i = ndigits;
break;
case 3:
leftright = 0;
/* no break */
/* fall through */
case 5:
i = ndigits + k + 1;
ilim = i;
Expand Down
1 change: 1 addition & 0 deletions Python/formatter_unicode.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,7 @@ parse_internal_render_format_spec(PyObject *format_spec,
format->thousands_separators = LT_UNDER_FOUR_LOCALE;
break;
}
/* fall through */
default:
invalid_comma_type(format->type);
return 0;
Expand Down
2 changes: 1 addition & 1 deletion Python/getargs.c
Original file line number Diff line number Diff line change
Expand Up @@ -2304,8 +2304,8 @@ skipitem(const char **p_format, va_list *p_va, int flags)
/* after 'e', only 's' and 't' is allowed */
goto err;
format++;
/* explicit fallthrough to string cases */
}
/* fall through */

case 's': /* string */
case 'z': /* string or None */
Expand Down
3 changes: 3 additions & 0 deletions Python/marshal.c
Original file line number Diff line number Diff line change
Expand Up @@ -1112,6 +1112,7 @@ r_object(RFILE *p)

case TYPE_ASCII_INTERNED:
is_interned = 1;
/* fall through */
case TYPE_ASCII:
n = r_long(p);
if (PyErr_Occurred())
Expand All @@ -1124,6 +1125,7 @@ r_object(RFILE *p)

case TYPE_SHORT_ASCII_INTERNED:
is_interned = 1;
/* fall through */
case TYPE_SHORT_ASCII:
n = r_byte(p);
if (n == EOF) {
Expand All @@ -1149,6 +1151,7 @@ r_object(RFILE *p)

case TYPE_INTERNED:
is_interned = 1;
/* fall through */
case TYPE_UNICODE:
{
const char *buffer;
Expand Down
12 changes: 6 additions & 6 deletions Python/pyhash.c
Original file line number Diff line number Diff line change
Expand Up @@ -393,13 +393,13 @@ siphash24(const void *src, Py_ssize_t src_sz) {
pt = (uint8_t *)&t;
m = (uint8_t *)in;
switch (src_sz) {
case 7: pt[6] = m[6];
case 6: pt[5] = m[5];
case 5: pt[4] = m[4];
case 7: pt[6] = m[6]; /* fall through */
case 6: pt[5] = m[5]; /* fall through */
case 5: pt[4] = m[4]; /* fall through */
case 4: memcpy(pt, m, sizeof(uint32_t)); break;
case 3: pt[2] = m[2];
case 2: pt[1] = m[1];
case 1: pt[0] = m[0];
case 3: pt[2] = m[2]; /* fall through */
case 2: pt[1] = m[1]; /* fall through */
case 1: pt[0] = m[0]; /* fall through */
}
b |= _le64toh(t);

Expand Down
3 changes: 3 additions & 0 deletions Python/wordcode_helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,13 @@ write_op_arg(_Py_CODEUNIT *codestr, unsigned char opcode,
switch (ilen) {
case 4:
*codestr++ = PACKOPARG(EXTENDED_ARG, (oparg >> 24) & 0xff);
/* fall through */
case 3:
*codestr++ = PACKOPARG(EXTENDED_ARG, (oparg >> 16) & 0xff);
/* fall through */
case 2:
*codestr++ = PACKOPARG(EXTENDED_ARG, (oparg >> 8) & 0xff);
/* fall through */
case 1:
*codestr++ = PACKOPARG(opcode, oparg & 0xff);
break;
Expand Down