This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
frame_needed
- From: Gergely Tamás <gertom at rgai dot hu>
- To: "gcc-help at gcc dot gnu dot org" <gcc-help at gcc dot gnu dot org>
- Date: Wed, 27 Nov 2002 11:42:26 +0100
- Subject: frame_needed
Hello!
I have gcc 3.2 for arm-elf and arm-linux targets, and I found a
difference: the arm-linux version compiles smaller code with the
same options. I've found that some registers are saved in the
beginning of some functions in the arm-elf objects, and this code
is omitted (replaced with the save of only one register) in the
arm-linux objects.
My question is: where the value of the 'frame_needed' attribute
comes from. Is that dependent on the target or some configuration
switches of gcc, or the headers of the used libraries or some #defines?
Thanks,
Gertom
With arm-elf target:
bsSetStream:
@ args = 0, pretend = 0, frame = 0
> @ frame_needed = 1, uses_anonymous_args = 0
> mov ip, sp
> stmfd sp!, {fp, ip, lr, pc}
ldr r3, .L15
ldr r2, [r3, #0]
cmp r2, #0
---
With arm-linux target:
bsSetStream:
@ args = 0, pretend = 0, frame = 0
> @ frame_needed = 0, uses_anonymous_args = 0
> str lr, [sp, #-4]!
ldr r3, .L15
ldr r2, [r3, #0]
cmp r2, #0
---
--
**************************************************************************
* Gergely Tamás e-mail:gertom@rgai.hu *
* ICQ:104783919 http://gertom.rgai.hu *
**************************************************************************