http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53227
--- Comment #4 from Ulrich Weigand <uweigand at gcc dot gnu.org> 2012-05-04 16:56:59 UTC --- (In reply to comment #3) > However, reload should notice that memory could be propagated into bswap. Since register allocation already assigned a hard reg to the pseudo, reload is happy. Reload doesn't generally attempt to go back and search for whether the value is also available in memory (unless it has to ...). In general, it is preferable for earlier passes to leave an operand as MEM (if an insn accepts memory operands in some alternative), so that reload can then make the decision whether to use the MEM or to reload into a register.