------- Comment #6 from henning dot m at insightbb dot com 2007-11-01 21:26 ------- (In reply to comment #5) > Mike, can you provide additional information as to where the bug is? > This is the assembly output I get:
Note that r14,r15 is being reserved for variable x when only a single reg is needed. Strange enough if call sub2 with (x+1) then only one reg is used and the code decreases by 12 bytes. 000000e8 <main>: e8: ef 92 push r14 ea: ff 92 push r15 ec: 1f 93 push r17 ee: cf 93 push r28 f0: df 93 push r29 f2: cd b7 in r28, 0x3d ; 61 f4: de b7 in r29, 0x3e ; 62 f6: 21 97 sbiw r28, 0x01 ; 1 f8: 0f b6 in r0, 0x3f ; 63 fa: f8 94 cli fc: de bf out 0x3e, r29 ; 62 fe: 0f be out 0x3f, r0 ; 63 100: cd bf out 0x3d, r28 ; 61 102: ee 24 eor r14, r14 104: ff 24 eor r15, r15 106: 19 81 ldd r17, Y+1 ; 0x01 108: 8e 2d mov r24, r14 10a: 0e 94 57 00 call 0xae ; 0xae <sub2> 10e: 18 0f add r17, r24 110: 19 83 std Y+1, r17 ; 0x01 112: 08 94 sec 114: e1 1c adc r14, r1 116: f1 1c adc r15, r1 118: 80 e8 ldi r24, 0x80 ; 128 11a: e8 16 cp r14, r24 11c: f1 04 cpc r15, r1 11e: 99 f7 brne .-26 ; 0x106 <main+0x1e> 120: f0 cf rjmp .-32 ; 0x102 <main+0x1a> 00000122 <_exit>: 122: ff cf rjmp .-2 ; 0x122 <_exit> -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33970