This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]