https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106116
--- Comment #4 from Petr Skocik <pskocik at gmail dot com> --- It would be interesting to do this at the assembler level, effectively completely turning what's equivalent to `jmp 1f; 1:` to nothing. This would also be in line with the GNU assembler's apparent philosophy that jmp is a high-level variadic-length instruction (either jmp, or jmpq, whichever is possible first => this could become: nothing, jmp, or jmpq). I have a bunch of multiparam functions such with supporting functions structured as follows: void func_A(int A){ func_AB(DEFAULT_C); } void func_AB(int A, int B){ func_ABC(A,B,DEFAULT_C); } void func_ABC(int A, int B, int C){ func_ABCD(A,B,C,DEFAULT_D); } void func_ABC(int A, int B, int C, int D){ //... } which could size-wise benefit from eliding the jumps, turning them into fallthrus this way, but yeah, probably not worth the effort (unless somebody knows how to easily hack gas to do it).