On Tue, Nov 25, 2014 at 11:46:52AM -0700, Jeff Law wrote: > On 11/14/14 12:19, Segher Boessenkool wrote: > >With this new field in place, we can have LOG_LINKS for insns that set > >more than one register and distribute them properly in distribute_links. > >This then allows many more PARALLELs to be combined. > > > >Also split off new functions can_combine_{def,use}_p from the > >create_log_links function. > > > > > >2014-11-14 Segher Boessenkool <seg...@kernel.crashing.org> > > > >gcc/ > > * combine.c (struct insn_link): New field `regno'. > > (alloc_insn_link): New parameter `regno'. Use it. > > (find_single_use): Check the new field. > > (can_combine_def_p, can_combine_use_p): New functions. Split > > off from ... > > (create_log_links): ... here. Correct data type of `regno'. > > Adjust call to alloc_insn_link. > > (adjust_for_new_dest): Find regno, use it in call to > > alloc_insn_link. > > (try_combine): Adjust call to alloc_insn_link. > > (distribute_links): Check the new field.
> Didn't you lose the check that avoids duplicated LOG_LINKs? I don't think so; if I did, that's a bug. > Or is the > claim that the check is no longer needed because there are no duplicates > now that we include the register associated with the link? Are you talking about create_log_links? There can be no duplicates there (anymore), that would be multiple defs of the same reg in the same insn, indeed. I did check all the places that look at links, and adjusted everything that needed adjusting. Could have missed something of course... Segher