llvm/test/Transforms/GVN
Owen Anderson b0ba0f4170 LoadPRE was not properly checking that the load it was PRE'ing post-dominated the block it was being hoisted to.
Splitting critical edges at the merge point only addressed part of the issue; it is also possible for non-post-domination
to occur when the path from the load to the merge has branches in it.  Unfortunately, full anticipation analysis is
time-consuming, so for now approximate it.  This is strictly more conservative than real anticipation, so we will miss
some cases that real PRE would allow, but we also no longer insert loads into paths where they didn't exist before. :-)

This is a very slight net positive on SPEC for me (0.5% on average).  Most of the benchmarks are largely unaffected, but
when it pays off it pays off decently: 181.mcf improves by 4.5% on my machine.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114785 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-25 05:26:18 +00:00
..
2007-07-25-DominatedLoop.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-25-InfiniteLoop.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-25-Loop.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-25-NestedLoop.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-25-SinglePredecessor.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-26-InterlockingLoops.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-26-NonRedundant.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-26-PhiErasure.ll switch GVN to use SSAUpdater. Besides removing a lot of complexity 2009-10-10 23:50:30 +00:00
2007-07-30-PredIDom.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-31-NoDomInherit.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2007-07-31-RedundantPhi.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-02-12-UndefLoad.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-02-13-NewPHI.ll stop using anders-aa 2010-03-01 20:24:50 +00:00
2008-02-24-NonDominatedMemcpy.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-02-26-MemCpySize.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-07-02-Unreachable.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-12-09-SelfRemove.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-12-12-RLE-Crash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-12-14-rle-reanalyze.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2008-12-15-CacheVisited.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-01-21-SortInvalidation.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-01-22-SortInvalidation.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-02-17-LoadPRECrash.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-03-10-PREOnVoid.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-06-17-InvalidPRE.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
2009-07-13-MemDepSortFail.ll Correct bogus module triple specifications. 2010-08-30 10:48:29 +00:00
2009-11-12-MemDepMallocBitCast.ll Memory dependence analysis was incorrectly stopping to scan for stores to a pointer at bitcast uses of a malloc call. 2009-10-13 01:42:53 +00:00
2010-03-31-RedundantPHIs.ll Re-commit my previous SSAUpdater changes. The previous version naively tried 2010-04-17 03:08:24 +00:00
2010-05-08-OneBit.ll Fix PR7052, patch by Jakub Staszak! 2010-05-08 20:01:44 +00:00
basic.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
bitcast-of-call.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
calls-nonlocal.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
calls-readonly.ll Check that GVN performs this transform even if the calls 2009-10-16 12:18:23 +00:00
condprop.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
crash-no-aa.ll Fix PR5744, a case where we were getting the pointer size instead of the 2009-12-10 00:11:45 +00:00
crash.ll a testcase that doesn't crash GVN but could someday. 2010-02-11 05:08:05 +00:00
dg.exp sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
invariant-simple.ll add newlines at the end of files. 2010-04-07 22:53:17 +00:00
lifetime-simple.ll Fix intrinsic signature in this test. 2010-04-17 21:12:55 +00:00
load-constant-mem.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
load-pre-align.ll Remove arm_apcscc from the test files. It is the default and doing this 2010-06-17 15:18:27 +00:00
local-pre.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
lpre-call-wrap-2.ll Eliminate uses of %prcontext. 2009-09-05 11:35:16 +00:00
lpre-call-wrap.ll Eliminate uses of %prcontext. 2009-09-05 11:35:16 +00:00
mixed.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
nonescaping-malloc.ll Try to work around grep's "Binary file (standard input) matches" complaints seen 2009-11-20 09:53:25 +00:00
null-aliases-nothing.ll Delete useless trailing semicolons. 2010-01-05 17:55:26 +00:00
pre-basic-add.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
pre-load.ll Testcase for critical edge splitting with load PRE. 2010-02-16 20:48:55 +00:00
pre-single-pred.ll LoadPRE was not properly checking that the load it was PRE'ing post-dominated the block it was being hoisted to. 2010-09-25 05:26:18 +00:00
rle-must-alias.ll I accidentally implemented this :) 2009-11-27 19:56:00 +00:00
rle-no-phi-translate.ll this test is failing, and is expected to. 2009-11-27 06:36:28 +00:00
rle-nonlocal.ll Avoid creating redundant PHIs in SSAUpdater::GetValueInMiddleOfBlock. 2010-01-27 22:01:02 +00:00
rle-phi-translate.ll fix an overly conservative caching issue that caused memdep to 2009-12-19 21:29:22 +00:00
rle-semidominated.ll Change tests from "opt %s" to "opt < %s" so that opt doesn't see the 2009-09-11 18:01:28 +00:00
rle.ll fix PR6642, GVN forwarding from memset to load of the base of the memset. 2010-03-25 05:58:19 +00:00