https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82682
--- Comment #7 from Jeffrey A. Law <law at redhat dot com> --- One thought would be to realize that the copy/extend sequence seen in this case is special. It's going to be used when the input for the extension can't be used in an extension (ie %esi in this case). ie, we had to emit an input reload for the extension insn. So when the source of the copy is the destination of the extension and the destination of the copy is the source of the extension and the appropriate input operands die at the copy & extension, then we could just ignore the copy entirely and treat the extension like a (set (src) (extend (src_in_narrow_mode)) Again, not sure how ugly that would be to model in REE, but it's one way to think about the problem.