> That said, I suppose it wouldn't hurt to modify sched-deps > to treat a SET+REG_UNUSED as a CLOBBER.
Early in sched_analyze_reg, check for ref==USE and a REG_UNUSED note, and change ref to CLOBBER? I tried it, it didn't seem to help... Index: sched-deps.c =================================================================== --- sched-deps.c (revision 164652) +++ sched-deps.c (working copy) @@ -2116,12 +2116,16 @@ sched_analyze_reg (struct deps_desc *dep if (!reload_completed && sel_sched_p () && (regno >= max_reg_num () - 1 || regno >= deps->max_reg)) extend_deps_reg_info (deps, regno); maybe_extend_reg_info_p (); + if (ref == SET + && find_regno_note (insn, REG_UNUSED, regno)) + ref = CLOBBER; + /* A hard reg in a wide mode may really be multiple registers. If so, mark all of them just like the first. */ if (regno < FIRST_PSEUDO_REGISTER) { int i = hard_regno_nregs[regno][mode]; if (ref == SET)