http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56439
--- Comment #6 from Robert "Finny" Merrill <rfmerrill at berkeley dot edu>
2013-02-25 16:39:39 UTC ---
Well other than the fact that it now uses two registers (the registers are
8-bit and ints are 16-bit), no, it does the same thing
register int foo asm ("r30");
void baz();
void quux();
void bar() {
foo = foo * 2;
if (foo > 10)
baz();
else
quux();
}
yields:
bar:
/* prologue: function */
/* frame size = 0 */
/* stack size = 0 */
.L__stack_usage = 0
mov r24,r30
mov r25,r31
lsl r24
rol r25
mov r30,r24
mov r31,r25
sbiw r24,11
brge .L4
rjmp quux
.L4:
rjmp baz