https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69347
--- Comment #13 from Jeffrey A. Law <law at redhat dot com> --- The memory usage is a trivial problem. The FSM bits do this in a couple places: vec_alloc (next_path, n_basic_blocks_for_fn (cfun)); gcc-5 did this too and I dutifully copied it when those bits moved around for gcc-6. What did change in gcc-6 is how often we call into the FSM bits -- we rely on the FSM approach fairly heavily in gcc-6 and it exposed that lameness. All the uses are of the safe_push variety, so we can shove in any constant and it'll adjust appropriately. Doing so drops the usage more than an order of magnitude.