I have done some more testing using gcc-3.4, guided by this text in he gcc manual: -Os disables the following optimization flags: -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -fprefetch-loop-arrays
After much testing I can only conclude that these options do not affect this problem (: Here's the short version of my test cases: TestNr Boots Options --------------------------------------------------------- 0 No -Os 1 Yes -O2 14 No -Os -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -fprefetch-loop-arrays 18 Yes -O2 -fno-reorder-blocks 19 Yes -O2 -fno-align-functions -fno-align-jumps -fno-align-loops -fno-align-labels -fno-reorder-blocks The assembler code produced for TestNr 18 and 19 are the same. I have put the vsprintf.s assembler code for TestNr 14 and 18 on http://www.mph.eclipse.co.uk/pub/linux/ together with assembler code generated from: $ objdump -d vsprintf.o14 | cut -f3 > vsprintf.asm14 $ objdump -d vsprintf.o18 | cut -f3 > vsprintf.asm18 But the difference between these is still quite large. Hopefully this is of some use. I'm out of ideas what to try next. Let me know if there is anything else I can try, or if you need more information. Best regards, -- Martin