func_cast.c: C program reproducing the issue. Using an additional (void*) cast, it's possible to workaround the cast warning.
/* Test GCC 8.1 -Wcast-function-type for https://bugs.python.org/issue33015
*
* Compiled on Linux with:
* gcc x.c -o x -Wall -Wextra -lpthread
*
* Workaround the cast:
* gcc x.c -o x -Wall -Wextra -lpthread -D UGLY_CAST
*/
/* No result value */
typedef void (*python_callback) (void *);
/* Result type: "void*" (untyped pointer) */
typedef void* (*pthread_callback) (void *);
int test_cast(python_callback func)
{
...
#ifdef UGLY_CAST
pthread_callback func2 = (pthread_callback)(void *)func;
#else
pthread_callback func2 = (pthread_callback)func;
#endif
...
}