http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47749
--- Comment #10 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-09-28 16:01:45 UTC --- FWIW, the reflector thread starting with c++std-core-12400 has lots of rationale why a diagnostic isn't required. One reason is C compatibility as it's only undefined in C if the return value is used by the caller (which is what I was thinking of in comment 1). Another reason is that it's not always possible to tell at compile-time if it will ever be reached, e.g. there might be a call to a function that will never return, but doesn't have attribute((noreturn)), or a call to a function which always throws.