llvm-6502/test/Transforms/GVN
Duncan Sands 02b5e72ac6 GVN does simple propagation of conditions: when it sees a conditional
branch "br i1 %x, label %if_true, label %if_false" then it replaces
"%x" with "true" in places only reachable via the %if_true arm, and
with "false" in places only reachable via the %if_false arm.  Except
that actually it doesn't: if value numbering shows that %y is equal
to %x then, yes, %y will be turned into true/false in this way, but
any occurrences of %x itself are not transformed.  Fix this.  What's
more, it's often the case that %x is an equality comparison such as
"%x = icmp eq %A, 0", in which case every occurrence of %A that is
only reachable via the %if_true arm can be replaced with 0.  Implement
this and a few other variations on this theme.  This reduces the number
of lines of LLVM IR in "GCC as one big file" by 0.2%.  It has a bigger
impact on Ada code, typically reducing the number of lines of bitcode
by around 0.4% by removing repeated compiler generated checks.  Passes
the LLVM nightly testsuite and the Ada ACATS testsuite.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141177 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-05 14:28:49 +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 remove a trivial test, make some other tests less trivial. 2011-05-22 07:02:43 +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 remove a trivial test, make some other tests less trivial. 2011-05-22 07:02:43 +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
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 Update some tests to the new EH scheme. 2011-09-01 00:58:03 +00:00
2010-11-13-Simplify.ll
2011-04-27-phioperands.ll This is an automatically reduced test case that crashed in GVN, at some 2011-06-20 14:46:47 +00:00
2011-06-01-NonLocalMemdepMiscompile.ll When marking a block as being unanalyzable, use "Clobber" on the terminator instead of the first instruction in the block. This is a bit of a hack; "Clobber" isn't really the right marking in the first place. memdep doesn't really have any way of properly expressing "unanalyzable" at the moment. Using it on the terminator is much less ambiguous than using it on an arbitrary instruction, though. 2011-06-02 00:08:52 +00:00
2011-07-07-MatchIntrinsicExtract.ll Added test cases for GVN signed intrinsics recognition, r134777. 2011-07-09 00:36:54 +00:00
2011-09-07-TypeIdFor.ll Mark the eh.typeid.for intrinsic as being 'const', which it is inside 2011-09-09 07:50:37 +00:00
atomic.ll Atomic load/store handling for the passes using memdep (GVN, DSE, memcpyopt). 2011-08-17 22:22:24 +00:00
basic.ll
bitcast-of-call.ll
calls-nonlocal.ll
calls-readonly.ll
condprop.ll GVN does simple propagation of conditions: when it sees a conditional 2011-10-05 14:28:49 +00:00
crash-no-aa.ll
crash.ll fix PR9841 by having GVN not process dead loads. This was 2011-05-22 07:03:34 +00:00
dg.exp
lifetime-simple.ll
load-constant-mem.ll
load-pre-align.ll
load-pre-licm.ll
local-pre.ll
lpre-call-wrap-2.ll
lpre-call-wrap.ll
non-local-offset.ll
nonescaping-malloc.ll rip out a ton of intrinsic modernization logic from AutoUpgrade.cpp, which is 2011-06-18 06:05:24 +00:00
null-aliases-nothing.ll
phi-translate-partial-alias.ll Add a testcase to demonstrate the problem where phi translation is 2011-06-04 07:05:05 +00:00
phi-translate.ll GVN does simple propagation of conditions: when it sees a conditional 2011-10-05 14:28:49 +00:00
pr10820.ll Extra CHECK-NOT to make sure that GVN transform works properly. 2011-09-02 17:40:39 +00:00
pre-basic-add.ll
pre-load.ll
pre-single-pred.ll
preserve-tbaa.ll make this test less trivial. 2011-05-22 06:59:33 +00:00
rle-must-alias.ll
rle-no-phi-translate.ll
rle-nonlocal.ll
rle-phi-translate.ll
rle-semidominated.ll
rle.ll rip out a ton of intrinsic modernization logic from AutoUpgrade.cpp, which is 2011-06-18 06:05:24 +00:00