标签: c++ gcc recursion clang tail-recursion
通过-O2启用尾调用优化,以下程序按预期使用GCC无休止地运行。然而,对于Clang,程序终止并输出一个值;每次都显然不同。有谁知道为什么?
-O2
#include <iostream> int rec() { return 1 + rec(); } int main(int argc, char *argv[]) { int r; r = rec(); std::cout << r << '\n'; return 0; }