https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90316
--- Comment #21 from Richard Biener <rguenth at gcc dot gnu.org> --- It also looks the hash_table<expr_pred_trans_d> hash function is weak judging from the time spent in the equality routine. Index: gcc/tree-ssa-pre.c =================================================================== --- gcc/tree-ssa-pre.c (revision 271000) +++ gcc/tree-ssa-pre.c (working copy) @@ -4118,6 +4118,12 @@ fini_pre () bitmap_obstack_release (&grand_bitmap_obstack); bitmap_set_pool.release (); pre_expr_pool.release (); + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "phi-translate cache statistics: " + "size %ld, %ld elements, %f collisions\n", + (long) phi_translate_table->size (), + (long) phi_translate_table->elements (), + phi_translate_table->collisions ()); delete phi_translate_table; phi_translate_table = NULL; delete expression_to_id; should help verify that if you then do a -fdump-tree-pre-details and look into the respective generated dump file. Similar for get_expr_value_id? But that one should be cheap so I am a bit confused about this profile graph.