-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Open
Labels
Description
volatile unsigned char c;
void mod(unsigned i)
{
if (i > 9) {
mod(i / 10);
mod(i % 10);
} else {
c = '0' + i;
}
}
Old llvm (mid April):
000000ec <mod>:
ec: ef 92 push r14
ee: ff 92 push r15
f0: 0f 93 push r16
f2: 1f 93 push r17
f4: 8c 01 movw r16, r24
f6: 0a 30 cpi r16, 0x0A ; 10
f8: 11 05 cpc r17, r1
fa: a8 f0 brcs .+42 ; 0x126 <.Lname50+0x3>
fc: 2d ec ldi r18, 0xCD ; 205
fe: 3c ec ldi r19, 0xCC ; 204
100: 40 e0 ldi r20, 0x00 ; 0
102: 50 e0 ldi r21, 0x00 ; 0
104: b8 01 movw r22, r16
106: ca 01 movw r24, r20
108: 52 d0 rcall .+164 ; 0x1ae <__mulsi3>
10a: 7c 01 movw r14, r24
10c: f6 94 lsr r15
10e: e7 94 ror r14
110: f6 94 lsr r15
112: e7 94 ror r14
114: f6 94 lsr r15
116: e7 94 ror r14
118: c7 01 movw r24, r14
11a: e8 df rcall .-48 ; 0xec <mod>
11c: 8e 2d mov r24, r14
11e: 66 ef ldi r22, 0xF6 ; 246
120: 3d d0 rcall .+122 ; 0x19c <__mulqi3>
122: 80 0f add r24, r16
124: 01 c0 rjmp .+2 ; 0x128 <.Lname51>
126: 80 2f mov r24, r16
128: 80 63 ori r24, 0x30 ; 48
12a: 80 93 be 00 sts 0x00BE, r24 ; 0x8000be <c>
12e: 1f 91 pop r17
130: 0f 91 pop r16
132: ff 90 pop r15
134: ef 90 pop r14
136: 08 95 ret
Current llvm:
000000ec <mod>:
ec: ef 92 push r14
ee: ff 92 push r15
f0: 0f 93 push r16
f2: 1f 93 push r17
f4: 8c 01 movw r16, r24
f6: 0a 30 cpi r16, 0x0A ; 10
f8: 11 05 cpc r17, r1
fa: b0 f0 brcs .+44 ; 0x128 <.Lname51>
fc: 2d ec ldi r18, 0xCD ; 205
fe: 3c ec ldi r19, 0xCC ; 204
100: 40 e0 ldi r20, 0x00 ; 0
102: 50 e0 ldi r21, 0x00 ; 0
104: b8 01 movw r22, r16
106: ca 01 movw r24, r20
108: 63 d0 rcall .+198 ; 0x1d0 <__mulsi3>
10a: 7c 01 movw r14, r24
10c: f6 94 lsr r15
10e: e7 94 ror r14
110: f6 94 lsr r15
112: e7 94 ror r14
114: f6 94 lsr r15
116: e7 94 ror r14
118: c7 01 movw r24, r14
11a: e8 df rcall .-48 ; 0xec <mod>
11c: 6a e0 ldi r22, 0x0A ; 10
11e: 70 e0 ldi r23, 0x00 ; 0
120: c7 01 movw r24, r14
122: 45 d0 rcall .+138 ; 0x1ae <__mulhi3>
124: 08 1b sub r16, r24
126: 19 0b sbc r17, r25
128: 00 63 ori r16, 0x30 ; 48
12a: 00 93 be 00 sts 0x00BE, r16 ; 0x8000be <c>
12e: 1f 91 pop r17
130: 0f 91 pop r16
132: ff 90 pop r15
134: ef 90 pop r14
136: 08 95 ret