Remove extra MayLoad/MayStore flags from atomic_load/store.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 28 Aug 2012 03:11:32 +0000 (03:11 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 28 Aug 2012 03:11:32 +0000 (03:11 +0000)
commit36d29bc72345d882623b001c2692b9246a19688a
tree49a7f2440838b5a7c679f3cb6125268f55e19126
parentcff9baa95273bc279bf5fadb9e27afbd25cca20b
Remove extra MayLoad/MayStore flags from atomic_load/store.

These extra flags are not required to properly order the atomic
load/store instructions. SelectionDAGBuilder chains atomics as if they
were volatile, and SelectionDAG::getAtomic() sets the isVolatile bit on
the memory operands of all atomic operations.

The volatile bit is enough to order atomic loads and stores during and
after SelectionDAG.

This means we set mayLoad on atomic_load, mayStore on atomic_store, and
mayLoad+mayStore on the remaining atomic read-modify-write operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162733 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/SelectionDAGNodes.h
include/llvm/Target/TargetSelectionDAG.td
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
test/CodeGen/Hexagon/newvaluejump.ll
test/CodeGen/Hexagon/newvaluestore.ll