https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81042
Bug ID: 81042 Summary: Too many constexpr interations on unreachable loop. Product: gcc Version: 7.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: kevincox at kevincox dot ca Target Milestone: --- Created attachment 41526 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41526&action=edit Example code. The following code causes an error for too many iterations in the unreachable loop. Clang correctly creates a binary which returns 1 when run. It's worth noting that the previous version of gcc I tried this on hung forever, however 7.1.1 gives the too many iterations error. Example online: https://godbolt.org/g/QFRmwk $ g++ -std=c++17 test.cc /home/kevincox/test.cc: In function ‘int main()’: /home/kevincox/test.cc:14:24: in constexpr expansion of ‘foo()’ /home/kevincox/test.cc:7:3: error: constexpr loop iteration count exceeds limit of 262144 (use -fconstexpr-loop-limit= to increase the limit) while (true) {} // Unreachable ^~~~~ // test.cc constexpr static bool foo() { int i = 0; while (i < 1) { i++; continue; while (true) {} // Unreachable } return true; } int main() { constexpr bool f = foo(); return f; }