------- Comment #1 from ramana at gcc dot gnu dot org 2009-12-30 00:19 ------- This appears to be a 4.4 only size regression and this appears to be fixed on trunk.
With -Os -march=armv5te -mthumb size is 44 bytes on trunk as of today. gcc version 4.5.0 20091229 (experimental) (GCC) 00000000 <number_blocks>: 0: b5f0 push {r4, r5, r6, r7, lr} 2: 4b09 ldr r3, [pc, #36] ; (28 <number_blocks+0x28>) 4: 2200 movs r2, #0 6: 681b ldr r3, [r3, #0] 8: 2503 movs r5, #3 a: e007 b.n 1c <number_blocks+0x1c> c: c910 ldmia r1!, {r4} e: 009f lsls r7, r3, #2 10: 6826 ldr r6, [r4, #0] 12: 3201 adds r2, #1 14: 402e ands r6, r5 16: 433e orrs r6, r7 18: 3301 adds r3, #1 1a: 6026 str r6, [r4, #0] 1c: 4282 cmp r2, r0 1e: dbf5 blt.n c <number_blocks+0xc> 20: 4a01 ldr r2, [pc, #4] ; (28 <number_blocks+0x28>) 22: 6013 str r3, [r2, #0] 24: bdf0 pop {r4, r5, r6, r7, pc} 26: 46c0 nop ; (mov r8, r8) 28: 00000000 .word 0x00000000 -- ramana at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-12-30 00:19:26 date| | Summary|Code bloating on operations |[4.4 only] Code bloating on |with bit fields |operations with bit fields http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42501