1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/test/Transforms/EarlyCSE
Philip Reames a19558aa7c [EarlyCSE] DSE of atomic unordered stores
The rules for removing trivially dead stores are a lot less complicated than loads. Since we know the later store post dominates the former and the former dominates the later, unless the former has side effects other than the actual store, we can remove it. One slightly surprising thing is that we can freely remove atomic stores, even if the later one isn't atomic. There's no guarantee the atomic one was every visible.

For the moment, we don't handle DSE of ordered atomic stores. We could extend the same chain of reasoning to them, but the catch is we'd then have to model the ordering effect without a store instruction. Since our fences are a stronger than our operation orderings, simple using a fence isn't an obvious win. This arguable calls for a refinement in our fence specification, but that's (much) later work.

Differential Revision: http://reviews.llvm.org/D15352

llvm-svn: 255914
2015-12-17 18:50:50 +00:00
..
AArch64 [EarlyCSE] Fix handling of target memory intrinsics for CSE'ing loads. 2015-10-07 07:41:29 +00:00
atomics.ll [EarlyCSE] DSE of atomic unordered stores 2015-12-17 18:50:50 +00:00
basic.ll [EarlyCSE] DSE of stores which write back loaded values 2015-12-16 01:01:30 +00:00
commute.ll
conditional.ll Extend EarlyCSE to handle basic cases from JumpThreading and CVP 2015-05-22 23:53:24 +00:00
edge.ll Correct a mistaken comment from 238071 [NFC] 2015-05-23 00:05:43 +00:00
fence.ll Allow value forwarding past release fences in EarlyCSE 2015-08-27 01:32:33 +00:00
floatingpoint.ll
instsimplify-dom.ll
read-reg.ll Preserve the order of READ_REGISTER and WRITE_REGISTER 2015-05-18 16:42:10 +00:00