1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-28 22:42:52 +01:00
llvm-mirror/test/Transforms/GVN
Philip Reames fe255a8e29 Refine memory dependence's notion of volatile semantics
According to my reading of the LangRef, volatiles are only ordered with respect to other volatiles. It is entirely legal and profitable to forward unrelated loads over the volatile load. This patch implements this for GVN by refining the transition rules MemoryDependenceAnalysis uses when encountering a volatile.

The added test cases show where the extra flexibility is profitable for local dependence optimizations. I have a related change (227110) which will extend this to non-local dependence (i.e. PRE), but that's essentially orthogonal to the semantic change in this patch. I have tested the two together and can confirm that PRE works over a volatile load with both changes.  I will be submitting a PRE w/volatiles test case seperately in the near future.

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

llvm-svn: 227112
2015-01-26 18:54:27 +00:00
..
2007-07-25-DominatedLoop.ll
2007-07-25-InfiniteLoop.ll
2007-07-25-Loop.ll
2007-07-25-NestedLoop.ll
2007-07-25-SinglePredecessor.ll
2007-07-26-InterlockingLoops.ll Fix PR17952. 2013-11-11 22:00:23 +00:00
2007-07-26-NonRedundant.ll
2007-07-26-PhiErasure.ll
2007-07-30-PredIDom.ll
2007-07-31-NoDomInherit.ll
2007-07-31-RedundantPhi.ll
2008-02-12-UndefLoad.ll
2008-02-13-NewPHI.ll
2008-07-02-Unreachable.ll Fix PR17952. 2013-11-11 22:00:23 +00:00
2008-12-09-SelfRemove.ll
2008-12-12-RLE-Crash.ll
2008-12-14-rle-reanalyze.ll
2008-12-15-CacheVisited.ll
2009-01-21-SortInvalidation.ll
2009-01-22-SortInvalidation.ll
2009-02-17-LoadPRECrash.ll
2009-03-10-PREOnVoid.ll Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
2009-06-17-InvalidPRE.ll
2009-07-13-MemDepSortFail.ll
2009-11-12-MemDepMallocBitCast.ll
2010-03-31-RedundantPHIs.ll
2010-05-08-OneBit.ll
2010-11-13-Simplify.ll
2011-04-27-phioperands.ll
2011-06-01-NonLocalMemdepMiscompile.ll Use variable for register name in test 2013-11-10 00:57:17 +00:00
2011-07-07-MatchIntrinsicExtract.ll
2011-09-07-TypeIdFor.ll
2012-05-22-PreCrash.ll
atomic.ll Relax the constraint more in MemoryDependencyAnalysis.cpp 2014-08-29 20:32:58 +00:00
basic.ll
bitcast-of-call.ll
calloc-load-removal.ll GVN: Enable value forwarding for calloc 2014-06-12 21:16:19 +00:00
calls-nonlocal.ll
calls-readonly.ll
commute.ll
cond_br2.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
cond_br.ll Fix PR17952. 2013-11-11 22:00:23 +00:00
condprop.ll GVN: propagate equalities for floating point compares 2015-01-12 19:29:48 +00:00
crash-no-aa.ll
crash.ll
edge.ll GVN: propagate equalities for floating point compares 2015-01-12 19:29:48 +00:00
fpmath.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
invariant-load.ll Pass QueryInst down through non-local dependency calculation 2015-01-26 18:39:52 +00:00
lifetime-simple.ll
load-constant-mem.ll
load-from-unreachable-predecessor.ll Relax an assert a bit to avoid a crash on unreachable code. 2014-12-01 02:55:24 +00:00
load-pre-align.ll
load-pre-licm.ll
load-pre-nonlocal.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
local-pre.ll Fix PR17952. 2013-11-11 22:00:23 +00:00
lpre-call-wrap-2.ll
lpre-call-wrap.ll
malloc-load-removal.ll
MemdepMiscompile.ll
noalias.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
non-local-offset.ll
nonescaping-malloc.ll
null-aliases-nothing.ll
phi-translate-partial-alias.ll
phi-translate.ll
pr10820.ll
pr12979.ll
pr14166.ll
pr17732.ll
pr17852.ll Add a testcase for pr17852. 2013-11-11 15:37:52 +00:00
pre-basic-add.ll
pre-compare.ll
pre-gep-load.ll Re-reapply r221924: "[GVN] Perform Scalar PRE on gep indices that feed loads before 2015-01-09 19:19:56 +00:00
pre-load.ll
pre-single-pred.ll
preserve-tbaa.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
range.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
readattrs.ll
rle-must-alias.ll
rle-no-phi-translate.ll
rle-nonlocal.ll Fix PR17952. 2013-11-11 22:00:23 +00:00
rle-phi-translate.ll
rle-semidominated.ll Fix PR17952. 2013-11-11 22:00:23 +00:00
rle.ll Look through addrspacecast in GetPointerBaseWithConstantOffset 2014-07-14 22:39:22 +00:00
tbaa.ll Pass QueryInst down through non-local dependency calculation 2015-01-26 18:39:52 +00:00
unreachable_block_infinite_loop.ll Fix broken CHECK lines. 2014-01-11 21:06:00 +00:00
volatile.ll Refine memory dependence's notion of volatile semantics 2015-01-26 18:54:27 +00:00