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 <[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): 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
