Hi, these patches implement Incremental LTO, specifically by caching results of ltrans phase. Secondarily these patches contain changes to reduce divergence of ltrans partitions so that they can be cached.
The aim is to reduce compile times for quick edit-compile cycles while using LTO. Even with these minimal changes to the rest of GCC it works surprisingly well. Currently testing by self compiling cc1, with individual commits used as incremental changes, on average only ~1/3 of partitions need to be recompiled with `-O2 -g0` and ~1/2 with `-O2 -g`. Which directly reduces time spent in ltrans phase of LTO. Unfortunately larger gains are a bit fragile. You may remember that during my Cauldron talk I claimed reduction to ~1/6 and ~1/3 recompilations. That was achieved with branch from March. Since then there were at least two commits which introduced new divergence of partitions, though they seem fixable in future.