This is the mail archive of the gcc-patches@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]

Re: [tree-ssa] Tail recursion improvement


IMHO, if the input parameter n is -1 then both routines will run until memory 
is exhausted or numeric overflow occurs.

On Tuesday 09 December 2003 15:34, Daniel Jacobowitz wrote:
> On Tue, Dec 09, 2003 at 03:29:18PM -0600, Ken Wolcott wrote:
> > How does it handle the situation when n is initially less than zero?
>
> Try his transformed version below.  They have the same behavior.
>
> > On Tuesday 09 December 2003 15:18, Paolo Carlini wrote:
> > > Zdenek Dvorak wrote:
> > > >Hello,
> > > >
> > > >this patch enables tail recursive calls to be optimized in more cases;
> > > >for example it turns
> > > >
> > > >int sum (int n)
> > > >{
> > > >  if (n == 0)
> > > >    return 0;
> > > >
> > > >  return n + sum (n - 1);
> > > >}
> > > >
> > > >into
> > > >
> > > >int sum (int n)
> > > >{
> > > >  int acc = 0;
> > > >
> > > >  for (; n != 0; n--)
> > > >    acc += n;
> > > >
> > > >  return acc;
> > > >}
> > >
> > > Hey, fantastic Zdenek! I think that all around the world *thousands* of
> > > students are told something like "an optimizing compiler is able to
> > > turn the recursive, elegant, formulation of the factorial into the
> > > iterative, efficient one". Now it's really true for GCC!
> > >
> > > Now I wonder: what about Fibonacci? Highly inefficient in the reursive
> > > formulation, but basically just a sum: fib(n) = fib(n-1) + fib (n-2)??
> > >
> > > Paolo.


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