Related articles |
---|
[13 earlier articles] |
Re: Detailed algorithms on inline optimization anton@mips.complang.tuwien.ac.at (2010-01-25) |
Re: Detailed algorithms on inline optimization monnier@iro.umontreal.ca (Stefan Monnier) (2010-01-25) |
Re: Detailed algorithms on inline optimization kkylheku@gmail.com (Kaz Kylheku) (2010-01-28) |
Re: Detailed algorithms on inline optimization martin@gkc.org.uk (Martin Ward) (2010-01-28) |
Re: Detailed algorithms on inline optimization anton@mips.complang.tuwien.ac.at (2010-01-31) |
Re: Detailed algorithms on inline optimization dot@dotat.at (Tony Finch) (2010-02-02) |
Re: Detailed algorithms on inline optimization anton@mips.complang.tuwien.ac.at (2010-02-02) |
From: | anton@mips.complang.tuwien.ac.at (Anton Ertl) |
Newsgroups: | comp.compilers |
Date: | Tue, 02 Feb 2010 14:14:16 GMT |
Organization: | Institut fuer Computersprachen, Technische Universitaet Wien |
References: | 10-01-058 10-01-061 10-01-079 10-01-085 10-01-092 10-02-006 |
Keywords: | optimize |
Posted-Date: | 02 Feb 2010 23:09:50 EST |
anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:
>Kaz Kylheku <kkylheku@gmail.com> writes:
>>On 2010-01-25, Anton Ertl <anton@mips.complang.tuwien.ac.at> wrote:
>>> Chris Dodd <cdodd@acm.org> writes:
>>>>unsigned fib(unsigned n) { return n < 2 ? n : fib(n-2) + fib(n-1); }
[and the interesting code that gcc generates from that]
Here's another version:
unsigned fib(unsigned n)
{
unsigned accum=0;
for (; n>1; n--)
accum += fib(n-2);
return n+accum;
}
Apart from some differences in register and stack allocation, gcc
generates the same code for this as for the code above (including the
number of inlinings), so it's likely that gcc transforms the
doubly-recursive version above into something like this version.
I don't think that this can be expressed as a tail-recursive function
without helper function.
- anton
--
M. Anton Ertl
anton@mips.complang.tuwien.ac.at
http://www.complang.tuwien.ac.at/anton/
Return to the
comp.compilers page.
Search the
comp.compilers archives again.