This commit teaches InstCombine how to replace an atomicrmw operation
into a simple load atomic.
For a given atomicrmw <op>, this is possible when:
- The ordering of that operation is compatible with a load (i.e., anything that doesn't have a release semantic).
- <op> does not modify the value being stored
I don't think you should modify volatile this way.