https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64500
--- Comment #10 from ak at gcc dot gnu.org --- I misidentified the hot loop, it's actually this one in store_bindings: for (t = names; t; t = TREE_CHAIN (t)) { if (TREE_CODE (t) == TREE_LIST) id = TREE_PURPOSE (t); else id = DECL_NAME (t); if (store_binding_p (id)) bindings_need_stored.safe_push (id); } So it's a list of aliases that can get long? >From the LBR log store_binding_p is near always false. Perhaps the list of ids that need to be stored can be cached?