https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85890
Bug ID: 85890 Summary: cc1plus runs out of memory in recursive Fibonacci computation Product: gcc Version: 7.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: janniksilvanus at gmail dot com Target Milestone: --- ~/tmp: g++ --version g++ (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812] [...] ~/tmp: cat fibonacci.ii constexpr int fib(int n) { return n < 2 ? n : fib(n - 1) + fib(n - 2); } int foo() { int const result = fib(45); return result; } ~/tmp: g++ fibonacci.ii -c <runs forever until out of memory> - Version 7.3.0 seems to be affected as well, but not versions 7.2.1 and 8.1.0. - Omitting the 'const' in 'int const result', or replacing by 'constexpr' fixes the problem. - Using smaller values instead of 45 (e.g. 32), it seems the runtime of gcc is roughly proportional to the value of the computed result, indicating that gcc is recursively (without memoization!) computing the value, which has exponential runtime.