On Tue, May 18, 2021 at 07:45:14PM -0500, Segher Boessenkool wrote: > On Wed, May 19, 2021 at 10:26:22AM +1000, Michael Ellerman wrote: > > Guenter Roeck <linux@xxxxxxxxxxxx> writes: > > > Ah, sorry. I wasn't aware that the following is valid C code > > > > > > void f1() > > > { > > > return f2(); > > > ^^^^^^ > > > } > > > > > > as long as f2() is void as well. Confusing, but we live and learn. > > > > It might be valid, but it's still bad IMHO. > > > > It's confusing to readers, and serves no useful purpose. > > And it actually explicitly is undefined behaviour in C90 already > (3.6.6.4 in C90, 6.8.6.4 in C99 and later). ... but there is a GCC extension that allows this by default: <https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wreturn-type> For C only, warn about a 'return' statement with an expression in a function whose return type is 'void', unless the expression type is also 'void'. As a GNU extension, the latter case is accepted without a warning unless '-Wpedantic' is used. Segher