再帰判定
はじめてのにきで、素直に感動。
int is_tail_opt() {
return __builtin_return_address(1) != __builtin_return_address(2);
}
普通は呼び出された結果のスタックフレームが同じである事を調べるのに、1つ前の呼び出しが違うことを判断基準にしているのか。脱力っぷりがすごい。
そして、cygwinのgccでは、-O2でも末尾最適化されなかった。orz。
The comments to this entry are closed.
Comments