[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-gcc-list] Unused registers saves/restores ?
From: |
Dmitry K. |
Subject: |
[avr-gcc-list] Unused registers saves/restores ? |
Date: |
Tue, 10 Jun 2003 07:51:43 +1100 |
User-agent: |
KMail/1.5 |
Hello all,
Compiler:
avr-gcc --version
avr-gcc (GCC) 3.3.1 20030519 (prerelease)
Programm:
typedef struct { long a; int b; } lo_in;
lo_in foo_lo_in (void)
{
lo_in x;
x.a = 1;
x.b = 2;
return x;
};
Compile with:
avr-gcc -O3 -S foo_lo_in.c
Result: r2,3,4,7,... not used, but saved/restored:
.file "foo_lo_in.c"
.arch avr2
__SREG__ = 0x3f
__SP_H__ = 0x3e
__SP_L__ = 0x3d
__tmp_reg__ = 0
__zero_reg__ = 1
.global __do_copy_data
.global __do_clear_bss
.text
.global foo_lo_in
.type foo_lo_in, @function
foo_lo_in:
/* prologue: frame size=6 */
push r2
push r3
push r4
push r5
push r6
push r7
push r8
push r9
push r10
push r11
push r12
push r13
push r14
push r15
push r16
push r17
push r28
push r29
in r28,__SP_L__
in r29,__SP_H__
sbiw r28,6
in __tmp_reg__,__SREG__
cli
out __SP_H__,r29
out __SREG__,__tmp_reg__
out __SP_L__,r28
/* prologue end (size=26) */
ldi r23,lo8(0)
mov r17,r23
ldi r20,lo8(1)
ldi r21,hi8(1)
ldi r22,hlo8(1)
ldi r23,hhi8(1)
std Y+1,r20
std Y+2,r21
std Y+3,r22
std Y+4,r23
ldi r18,lo8(2)
ldi r19,hi8(2)
std Y+5,r18
std Y+6,r19
ldd r8,Y+6
ldd r16,Y+1
ldd r15,Y+2
ldd r5,Y+3
ldd r6,Y+4
ldd r14,Y+5
mov r18,r16
mov r19,r15
mov r20,r5
mov r21,r6
mov r22,r14
mov r23,r8
mov r24,r17
mov r25,r17
/* epilogue: frame size=6 */
adiw r28,6
in __tmp_reg__,__SREG__
cli
out __SP_H__,r29
out __SREG__,__tmp_reg__
out __SP_L__,r28
pop r29
pop r28
pop r17
pop r16
pop r15
pop r14
pop r13
pop r12
pop r11
pop r10
pop r9
pop r8
pop r7
pop r6
pop r5
pop r4
pop r3
pop r2
ret
/* epilogue end (size=25) */
/* function foo_lo_in size 79 (28) */
.size foo_lo_in, .-foo_lo_in
/* File "foo_lo_in.c": code 79 = 0x004f ( 28), prologues 26, epilogues 25
*/
- [avr-gcc-list] Unused registers saves/restores ?,
Dmitry K. <=