gh-121040: Use __attribute__((fallthrough)) (#121044)

Fix warnings when using -Wimplicit-fallthrough compiler flag.

Annotate explicitly "fall through" switch cases with a new
_Py_FALLTHROUGH macro which uses __attribute__((fallthrough)) if
available. Replace "fall through" comments with _Py_FALLTHROUGH.

Add _Py__has_attribute() macro. No longer define __has_attribute()
macro if it's not defined. Move also _Py__has_builtin() at the top
of pyport.h.

Co-Authored-By: Nikita Sobolev <mail@sobolevn.me>
This commit is contained in:
Victor Stinner 2024-06-27 11:58:44 +02:00 committed by GitHub
parent 4999e0bda0
commit 12af8ec864
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
29 changed files with 131 additions and 104 deletions

View file

@ -1405,7 +1405,7 @@ _Py_dg_strtod(const char *s00, char **se)
switch (c) {
case '-':
sign = 1;
/* fall through */
_Py_FALLTHROUGH;
case '+':
c = *++s;
}
@ -1474,7 +1474,7 @@ _Py_dg_strtod(const char *s00, char **se)
switch (c) {
case '-':
esign = 1;
/* fall through */
_Py_FALLTHROUGH;
case '+':
c = *++s;
}
@ -2362,7 +2362,7 @@ _Py_dg_dtoa(double dd, int mode, int ndigits,
break;
case 2:
leftright = 0;
/* fall through */
_Py_FALLTHROUGH;
case 4:
if (ndigits <= 0)
ndigits = 1;
@ -2370,7 +2370,7 @@ _Py_dg_dtoa(double dd, int mode, int ndigits,
break;
case 3:
leftright = 0;
/* fall through */
_Py_FALLTHROUGH;
case 5:
i = ndigits + k + 1;
ilim = i;