------- 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

Reply via email to