MemoryDependenceAnalysis: Don't miscompile atomics
authorDavid Majnemer <david.majnemer@gmail.com>
Sat, 21 Mar 2015 06:19:17 +0000 (06:19 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sat, 21 Mar 2015 06:19:17 +0000 (06:19 +0000)
commitac5b42cad850ee9c934812f543cdb139cc7d9e98
tree727fdb0e8bbe488a0614ee0aabc9e437268d788e
parent048ca17f6ea4386f608eea62ca716466bf9f674c
MemoryDependenceAnalysis: Don't miscompile atomics

r216771 introduced a change to MemoryDependenceAnalysis that allowed it
to reason about acquire/release operations.  However, this change does
not ensure that the acquire/release operations pair.  Unfortunately,
this leads to miscompiles as we won't see an acquire load as properly
memory effecting.  This largely reverts r216771.

This fixes PR22708.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232889 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/MemoryDependenceAnalysis.cpp
test/Transforms/DeadStoreElimination/atomic.ll
test/Transforms/GVN/atomic.ll