The first basic block contains insns to move incoming argument registers to pseudos. When these pseudos live across calls, they get allocated to call-saved registers. This in turns disables shrink-wrapping, since the move instruction requires the prologue (saving the call-saved reg) to occur before it. This patch addresses the problem by moving such moves downwards through the CFG until we find a place where the destination is used or the incoming argument is clobbered. Bernd