flow_find_cross_jump calls merge_memattrs for each pair of instructions that it was thinking of merging, regardless of whether the merge takes place. This can cause mem attributes to be dropped unnecessarily. See: http://gcc.gnu.org/ml/gcc/2012-01/msg00015.html for more discussion and context.
Confirmed.
It also calls merge_notes (so I suppose might drop REG_EQUAL notes). Both should be delayed to commit time.