Hi, The attached SH patch converts sequences such as: movt r2 movt r13 into: movt r2 mov r2,r13 This shortens the live range of the T bit register and is better for parallel execution. It doesn't happen often, but it's easy to avoid it. Unfortunately I had to do this manually because cprop_hardreg gets in the way here. If done as a peephole2, cprop_hardreg then unconditionally just converts it back, because it thinks that all reg copies are equal in some way. Tested on sh-elf with make -k check RUNTESTFLAGS="--target_board=sh-sim \{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}" Committed as r228386. Cheers, Oleg gcc/ChangeLog: * config/sh/sh.md: Add new unnamed split pattern to handle movt-movt sequences.