Richard Kenner wrote:
The issue is that we currently don't combine if volatile is anywhere in sight, whether or not we'd be affecting that access. Just because you have something volatile on the LHS doesn't mean we can't combine into the RHS. A good example are addressing modes: if we have a MEM->MEM copy with one side volatile, doing anything inside the addressing computation of either (even the volatile one) is perfectly safe.
OK, in that case you have to add to the list of restrictions that you never combine volatile references. I did not see that in the list.