See $subj. Committed. * config/rl78/rl78.c (move_elim_pass): Don't optimize away volatile memory references.
Index: config/rl78/rl78.c =================================================================== --- config/rl78/rl78.c (revision 220150) +++ config/rl78/rl78.c (working copy) @@ -222,7 +222,12 @@ can eliminate the second SET. */ if (prev && rtx_equal_p (SET_DEST (prev), SET_SRC (set)) - && rtx_equal_p (SET_DEST (set), SET_SRC (prev))) + && rtx_equal_p (SET_DEST (set), SET_SRC (prev)) + /* ... and none of the operands are volatile. */ + && ! volatile_refs_p (SET_SRC (prev)) + && ! volatile_refs_p (SET_DEST (prev)) + && ! volatile_refs_p (SET_SRC (set)) + && ! volatile_refs_p (SET_DEST (set))) { if (dump_file) fprintf (dump_file, " Delete insn %d because it is redundant\n",