下面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