https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100700
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- Right, and of course there are many -Wreturn-type cases where no switches or enums are involved at all. The warning is about the missing return from the end of the function, not about the switch that happens before that. Determining that the end of the function was reached because of a misunderstanding about how enumerations work (either in the standard, or in GCC without -fstrict-enums) is probably not easy.