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 <[email protected]>
> >
> >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