* Question about JUMP and LINK
@ 2012-03-16 6:52 bill4carson
2012-03-16 15:23 ` Dave Hylands
0 siblings, 1 reply; 3+ messages in thread
From: bill4carson @ 2012-03-16 6:52 UTC (permalink / raw)
To: kernelnewbies
Hi, All
The question is simple.
func_a {
call func_b
}
func_b {
call func_c
}
func_c {
return to func_a
}
The compiler I use let func_c to return func_a directly, IOW when func_b
calls func_c, it use JUMP, other JUMP and LINK, and it's definitely not
a question about inline or noinline.
So can I ask why how to let the compiler use JUMP and LINK when func_b
calls func_c?
If it's not the right place to post this, sorry for the noise.
thanks
--
I am a slow learner
but I will keep trying to fight for my dreams!
--bill
^ permalink raw reply [flat|nested] 3+ messages in thread* Question about JUMP and LINK
2012-03-16 6:52 Question about JUMP and LINK bill4carson
@ 2012-03-16 15:23 ` Dave Hylands
2012-03-20 2:19 ` bill4carson
0 siblings, 1 reply; 3+ messages in thread
From: Dave Hylands @ 2012-03-16 15:23 UTC (permalink / raw)
To: kernelnewbies
Hi Bill,
On Thu, Mar 15, 2012 at 11:52 PM, bill4carson <bill4carson@gmail.com> wrote:
> Hi, All
>
> The question is simple.
>
> func_a {
>
> ? ?call func_b
> }
>
> func_b {
>
> ? ?call func_c
> }
>
> func_c {
>
> ? ? ? ?return to func_a
> }
>
>
> The compiler I use let func_c to return func_a directly, IOW when func_b
> calls func_c, it use JUMP, other JUMP and LINK, and it's definitely not
> a question about inline or noinline.
>
> So can I ask why how to let the compiler use JUMP and LINK when func_b
> calls func_c?
This is called Tail Optimization. See
http://c2.com/cgi/wiki?TailCallOptimization
gcc (I'm using 4.4.4) with -O3 does this.
> If it's not the right place to post this, sorry for the noise.
The kernel newbies list is probably not the right place (since this
has nothing to do with the kernel). It also has nothing to do with
binutils. It's a gcc optimization, so picking a gcc list would
probably be more appropriate.
--
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com
^ permalink raw reply [flat|nested] 3+ messages in thread* Question about JUMP and LINK
2012-03-16 15:23 ` Dave Hylands
@ 2012-03-20 2:19 ` bill4carson
0 siblings, 0 replies; 3+ messages in thread
From: bill4carson @ 2012-03-20 2:19 UTC (permalink / raw)
To: kernelnewbies
On 2012?03?16? 23:23, Dave Hylands wrote:
> Hi Bill,
>
> On Thu, Mar 15, 2012 at 11:52 PM, bill4carson<bill4carson@gmail.com> wrote:
>> Hi, All
>>
>> The question is simple.
>>
>> func_a {
>>
>> call func_b
>> }
>>
>> func_b {
>>
>> call func_c
>> }
>>
>> func_c {
>>
>> return to func_a
>> }
>>
>>
>> The compiler I use let func_c to return func_a directly, IOW when func_b
>> calls func_c, it use JUMP, other JUMP and LINK, and it's definitely not
>> a question about inline or noinline.
>>
>> So can I ask why how to let the compiler use JUMP and LINK when func_b
>> calls func_c?
>
> This is called Tail Optimization. See
> http://c2.com/cgi/wiki?TailCallOptimization
>
> gcc (I'm using 4.4.4) with -O3 does this.
>
Thanks for the information.
>> If it's not the right place to post this, sorry for the noise.
>
> The kernel newbies list is probably not the right place (since this
> has nothing to do with the kernel). It also has nothing to do with
> binutils. It's a gcc optimization, so picking a gcc list would
> probably be more appropriate.
>
--
I am a slow learner
but I will keep trying to fight for my dreams!
--bill
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-03-20 2:19 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-16 6:52 Question about JUMP and LINK bill4carson
2012-03-16 15:23 ` Dave Hylands
2012-03-20 2:19 ` bill4carson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).