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)
commite165502ed7675f5c9ce9c0d064df6beed8961224
treef40b75c731fd6b8aadfbc7ca8f894fcd959a92d6
parentea00c2a06f5135b88c8331f35108d174d412725b
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.

llvm-svn: 232889
llvm/lib/Analysis/MemoryDependenceAnalysis.cpp
llvm/test/Transforms/DeadStoreElimination/atomic.ll
llvm/test/Transforms/GVN/atomic.ll