https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116899
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Similarly to the other BB, enable_ranger -> gimple_ranger -> ranger_cache does 1000 m_workback.create (0); 1001 m_workback.safe_grow_cleared (last_basic_block_for_fn (cfun)); 1002 m_workback.truncate (0); (which seems just weird, I'd expect m_workback.create (last_basic_block_for_fn (cfun)); Creating a large vector, filling it with zeros and then immediately truncating is just a waste of time) and then just uses m_workback.quick_push. That works only if no new basic blocks are created, which the gimple-lower-bitint creates a lot (split_block in tons of places, even manual create_basic_block).