[PR123121, LRA]: Fix wrong rematerialization of insns with several outputs
LRA in the test case, rematerialize insn with div/mod where div result
is not used. Still div result requires ax which is used by different
pseudos at point of rematerialization and this clobbers the pseudo
value. The patch solves the problem by constraining to single set
insns as we always rematerialize only one pseudo value. Also there is
no sense to rematerialize div/mod as usually their latency is more
than load value from CPU cache. The patch explicitly excludes such
insns from rematerialization.
gcc/ChangeLog:
PR rtl-optimization/123121
* lra-remat.cc (bad_for_rematerialization_p): Consider div/mod ops.
(operand_to_remat): Exclude rematerialization of insns with
multiple sets.