With tail-call optimisation enabled via -O2
, the following program runs endlessly using GCC, as expected. With Clang however, the program terminates, and outputs a value; apparently different each time. Does anyone know why?
#include <iostream>
int rec()
{
return 1 + rec();
}
int main(int argc, char *argv[])
{
int r;
r = rec();
std::cout << r << '\n';
return 0;
}