https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70452
--- Comment #14 from Patrick Palka <ppalka at gcc dot gnu.org> --- trunk is now at Execution times (seconds) phase setup : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 1%) wall 1287 kB ( 1%) ggc phase parsing : 1.28 (100%) usr 0.20 (100%) sys 1.48 (99%) wall 156462 kB (99%) ggc |name lookup : 0.03 ( 2%) usr 0.01 ( 5%) sys 0.04 ( 3%) wall 81 kB ( 0%) ggc |overload resolution : 0.04 ( 3%) usr 0.00 ( 0%) sys 0.05 ( 3%) wall 628 kB ( 0%) ggc preprocessing : 0.03 ( 2%) usr 0.04 (20%) sys 0.09 ( 6%) wall 2048 kB ( 1%) ggc parser (global) : 0.02 ( 2%) usr 0.07 (35%) sys 0.06 ( 4%) wall 7735 kB ( 5%) ggc parser function body : 1.23 (96%) usr 0.09 (45%) sys 1.33 (89%) wall 146667 kB (93%) ggc TOTAL : 1.28 0.20 1.49 157759 kB The remaining extra memory and runtime overhead relative to 4.9 is mostly due to the constexpr_call_table which caches the result of each constexpr call that's been evaluated. This table now gets cleared during GC though which in real programs triggers frequently enough that its size won't be a problem.