下面是一个为玩具编程语言以编程方式生成的片段,实际代码不同,但以下显示了它在执行时的作用,
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,所以必须有办法强制这样做吗?