https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97100
--- Comment #7 from uecker at gcc dot gnu.org --- The fix suppresses certain warnings which are guarded by a flag, but it is not always clear whether a specific warning should be suppressed or not in dead code. You could also always add a cast. Fundamentally, the program is that _Generic is not ideally designed for this use case. One could consider an extension _Generic(x, int i: f(i), long l: g(l)); that allows referring to the first argument with the type it would have in each branch.