1

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;
}
user2023370
  • 10,488
  • 6
  • 50
  • 83

0 Answers0