When moving arguments into pseudos, we are being very careful not to emit any instructions that could possibly clobber other argument registers. Currently, we generate unnecessarily complicated sequences of code for simple zero or sign extensions. With this patch, we check can_extend_p and the necessary predicates to see if an extend insn is available for the conversion we have to do. If so, we emit the insn directly, and create a REG_EQUIV note of the form (sign_extend (mem)). Reload can't really do anything with these yet, but there's an optimization in the register allocator to move argument loads directly before their use if there's only one use. On Thumb-2 this happens already, we seem to generate better code than before. Unfortunately Thumb-1, which the PR is about, has some other problems which I'll try to fix later. Bootstrapped and regression tested on i686-linux. Also regression tested on arm-linux, with my three usual sets of options. Ok? Bernd