> The problem may be in the dependency cost between the SET (insn 27) > and the USE (insn 30) being >= 1. Have you tried using > targetm.sched.adjust_cost() hook to set the cost of USE to 0?
It doesn't get called for those two insns. > Anyway, this seems strange, the scheduler should just output the > USEs as soon as they are ready. It does - that's the problem. The SET is setting the register that the USE is using, so the scheduler won't pack them together. I want to disable that, since *I* know that the USE is only there to keep the return value from being optimized away; the value isn't an actual dependency *there*.