https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86590
--- Comment #1 from Niall Douglas <s_gccbugzilla at nedprod dot com> --- Quoting from bug 86573 regarding this bug: > The real difference in -std=c++17 is _GLIBCXX_EXTERN_TEMPLATE. With > -std=c++14, we have many extern templates which the compiler almost never > inlines. This leaves existing inline functions small enough to be inlined in > main (once it is renamed). With -std=c++17, extern templates are gone, > everything is inlined, and the function that used to be small enough to be > inlined is now too big (several smaller functions have been inlined into it > first). Without inlining, the compiler cannot notice all the simplifications. > (this is in large part guesswork, feel free to verify) > > If someone wants to improve it, I would look into the inliner heuristics, > but that's probably going to be hard.