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

@ -1887,12 +1887,14 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
#ifdef AF_RDS
case AF_RDS:
/* RDS sockets use sockaddr_in: fall-through */
/* RDS sockets use sockaddr_in */
_Py_FALLTHROUGH;
#endif /* AF_RDS */
#ifdef AF_DIVERT
case AF_DIVERT:
/* FreeBSD divert(4) sockets use sockaddr_in: fall-through */
/* FreeBSD divert(4) sockets use sockaddr_in */
_Py_FALLTHROUGH;
#endif /* AF_DIVERT */
case AF_INET:
@ -2214,7 +2216,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
switch (s->sock_proto) {
#ifdef CAN_RAW
case CAN_RAW:
/* fall-through */
_Py_FALLTHROUGH;
#endif
#ifdef CAN_BCM
case CAN_BCM:
@ -2590,7 +2592,8 @@ getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret)
#ifdef AF_RDS
case AF_RDS:
/* RDS sockets use sockaddr_in: fall-through */
/* RDS sockets use sockaddr_in */
_Py_FALLTHROUGH;
#endif /* AF_RDS */
case AF_INET: