On 11/27/14 18:44, 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.

v2: Add used_between_p check to the only case where I2 can be a multiple
set and still be combined: we have a log_link for the first use of each
def now, so try_combine can be called with I3 later than the first use
of one of the sets, so we better check if we have multiple sets.


2014-11-27  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): Check reg_used_between_p when combining a PARALLEL
        as earlier insn.  Adjust call to alloc_insn_link.
        (distribute_links): Check the new field.
OK.
jeff

Reply via email to