On Wed, Aug 07, 2019 at 11:21:48PM +0100, Richard Sandiford wrote: > Segher Boessenkool <seg...@kernel.crashing.org> writes: > > On Wed, Aug 07, 2019 at 07:16:03PM +0100, Richard Sandiford wrote: > >> The main IRA routine includes the code: > >> > >> /* Don't move insns if live range shrinkage or register > >> pressure-sensitive scheduling were done because it will not > >> improve allocation but likely worsen insn scheduling. */ > >> if (optimize > >> && !flag_live_range_shrinkage > >> && !(flag_sched_pressure && flag_schedule_insns)) > >> combine_and_move_insns (); > >> > >> The comment about not moving insns for pressure-sensitive scheduling > >> makes sense, but I think the combine part of combine_and_move_insns is > >> still useful, since it's folding a set of an equivalent value into its > >> single user and so eliminates the need for one register altogether. > > > > During which pass are the newly combined instructions created? If not > > late, why does combine refuse to do this combination? > > During if_after_combine.
So immediately after combine. Why did combine refuse to do this itself? What am I missing? Segher