https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78549
--- Comment #23 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- Well, instrumenting a little bit I see that delete_root is getting called many many many times. So, every call to newunit_alloc is assigning a new unit number which is getting added to the treap and never reused in anyway. The result of this is that at the end of the program when any units left on the treap are deleted, we loop through over one million deletes. So I now have a better idea of what we need to do.