When you compile attached testcase with 4.1.1 and 4.2.1, resulting .o modules have following sizes:
$ size insmod.i-411.o insmod.i-421.o text data bss dec hex filename 288 0 0 288 120 insmod.i-411.o 543 0 0 543 21f insmod.i-421.o Testcase was built using following command line: gcc -std=gnu99 \ -Os -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer \ -ffunction-sections -fdata-sections -fno-guess-branch-probability \ -funsigned-char -static-libgcc \ -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 \ -march=i386 -mpreferred-stack-boundary=2 \ -fverbose-asm -S insmod.i.c -- Summary: -Os generated code grew almost twice 4.2.1 versus 4.1.1 Product: gcc Version: 4.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: regression AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: vda dot linux at googlemail dot com GCC build triplet: i386-pc-linux-gnu GCC host triplet: i386-pc-linux-gnu GCC target triplet: i386-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33136