下面GCC尾调用优化的是,被编程为玩具编程语言生成的代码段,实际的代码是不同的,但下面显示了执行时确实如此,用于以下情况
class Base{ };
Base b;
class Derived{
int fibo(int i){
if(i SMALLER 2)
return 1;
else
return (Derived)b.fibo(i-1) + (Derived)b.fibo(i-2);
}
};
//then somewhere in main
b = new Derived();
int i = (Derived)b.fibo(10);
我的问题是将GCC考虑这个消除尾部呼叫?
编辑:原来我对TOC的看法有点有缺陷,所以在不同的情况下,一个单一的返回定位在尾部的不同的功能,会考虑优化吗?我问的原因是有一堆计划给C编译器和AFAIK计划授权TOC,所以必须有办法强制这一点?
为什么不编译看看? – 2011-05-10 12:04:11