Related articles |
---|
Tail recursion strohm@airmail.net (2000-08-10) |
Re: Tail recursion pfaffben@msu.edu (Ben Pfaff) (2000-08-13) |
Re: Tail recursion danwang+news@cs.princeton.edu (Daniel C. Wang) (2000-08-14) |
Re: Tail recursion toon@moene.indiv.nluug.nl (Toon Moene) (2000-08-14) |
Re: Tail recursion fjh@cs.mu.OZ.AU (2000-08-21) |
Re: Tail recursion Wilco.Dijkstra@arm.com (Wilco Dijkstra) (2000-08-21) |
Re: Tail recursion mrs@kithrup.com (2000-08-21) |
Re: Tail recursion ian0kerr@my-deja.com (2000-09-08) |
Tail recursion Alexey.Mikhailov@gmail.com (jjb) (2006-11-04) |
[4 later articles] |
From: | "Daniel C. Wang" <danwang+news@cs.princeton.edu> |
Newsgroups: | comp.compilers |
Date: | 14 Aug 2000 17:30:32 -0400 |
Organization: | Princeton University |
References: | 00-08-054 00-08-071 |
Keywords: | optimize |
Ben Pfaff <pfaffben@msu.edu> writes:
> strohm@airmail.net (John R. Strohm) writes:
>
> > Do any of the commonly-available compilers for "mainstream" languages
> > do tail recursion optimization? In particular, any C, c++, or Ada
> > compilers?
>
> The GCC compiler suite does tail recursion optimization at least
> for C and C++ and probably for its other languages as well.
But only "intra-procedurally"
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
static int n;
static clock_t start;
void even(void);
void odd(void);
void even() {
if(n == 0) {
exit(0);
} else {
n--;
odd();
}
}
void odd() {
if(n == 0) {
exit(0);
} else {
n--;
even();
}
}
Last I checked gcc didn't turn the above program into
even:
if (n == 0) {
exit(0)
} else {
n--;
goto odd;
}
odd:
if (n == 0) {
exit(0);
} else {
n--
goto even;
}
which a smart Scheme and ML compiler would do...
Return to the
comp.compilers page.
Search the
comp.compilers archives again.