https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108476
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The reason it is enabled by default for C++ is that the 2 languages differ significantly in this regard. Falling through the end of a non-void function in C++ is undefined behavior, in C it is not, in C it is only UB if the caller actually uses the uninitialized return value (which is much harder to warn about). And in C it is enabled in -Wall, which you should use anyway if you care about warnings.