llvm-project/llvm/test/Transforms/NewGVN
Florian Hahn a6e63f176c [NewGVN] Fix handling of assumes
This patch fixes two bugs:

* test1: Previously assume(a >= 5) concluded that a == 5. That's only
         valid for assume(a == 5)...
* test2: If operands were swapped, additional users were added to the
         wrong cmp operand. This resulted in an "unsettled iteration"
         assertion failure.

Patch by Nikita Popov

Differential Revision: https://reviews.llvm.org/D46974

llvm-svn: 333007
2018-05-22 17:38:22 +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
2007-07-26-NonRedundant.ll
2007-07-26-PhiErasure.ll NewGVN: Update a number of xfailed tests to either be correct or note 2017-02-12 23:28:06 +00:00
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
2008-12-09-SelfRemove.ll Revert "NewGVN: Make unreachable blocks be marked with unreachable" 2017-01-30 17:06:55 +00:00
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-03-10-PREOnVoid.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-07-07-MatchIntrinsicExtract.ll NewGVN: We were not really failing this testcase, because the instructions it was looking for are unused. GVN value numbers unused instructions, NewGVN does not. Fix the instructions to be used, so we eliminate the redundancies it's checking for, and un-XFAIL it 2017-03-06 20:01:31 +00:00
2011-09-07-TypeIdFor.ll
2012-05-22-PreCrash.ll
2016-08-30-MaskedScatterGather.ll Support arbitrary address space pointers in masked gather/scatter intrinsics. 2017-05-03 12:28:54 +00:00
MemdepMiscompile.ll
assume-equal.ll [Devirtualization] MemDep returns non-local !invariant.group dependencies 2017-01-12 11:33:58 +00:00
assumes.ll [NewGVN] Fix handling of assumes 2018-05-22 17:38:22 +00:00
basic-cyclic-opt.ll NewGVN: Clean up how we handle the INITIAL class so that everything in 2017-02-11 12:48:50 +00:00
basic-undef-test.ll
basic.ll NewGVN: We weren't properly simplifying selects with equal arguments due to a thinko. 2017-08-24 02:43:17 +00:00
big-endian.ll
bitcast-of-call.ll NewGVN: Update a number of xfailed tests to either be correct or note 2017-02-12 23:28:06 +00:00
br-identical.ll
calloc-load-removal.ll NewGVN: Handle coercion of constant stores, loads, memory insts. 2017-04-02 13:23:44 +00:00
calls-nonlocal.ll NewGVN: Update a number of xfailed tests to either be correct or note 2017-02-12 23:28:06 +00:00
calls-readonly.ll
commute.ll
completeness.ll NewGVN: Fix PR 34473, by not using ExactlyEqualsExpression for finding 2017-09-30 23:51:55 +00:00
cond_br.ll
cond_br2.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
condprop-xfail.ll Add missing condprop-xfail.ll that contains the remaining xfail'd tests 2017-03-14 01:46:51 +00:00
condprop.ll PredicateInfo: Support switch statements 2017-02-22 22:20:58 +00:00
crash-no-aa.ll
crash.ll
cyclic-phi-handling.ll NewGVN: Fix PR 31501. 2017-01-07 00:01:42 +00:00
dbg-redundant-load.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
deadstore.ll NewGVN: Add basic dead and redundant store elimination 2017-01-27 02:37:11 +00:00
debugloc.ll Do not propagate DebugLoc across basic blocks 2017-01-31 20:57:13 +00:00
edge.ll PredicateInfo: Support switch statements 2017-02-22 22:20:58 +00:00
equivalent-phi.ll NewGVN: Add a test case for equivalent phis. 2017-01-02 19:55:13 +00:00
fence.ll [AliasAnalysis] Fences do not modify constant memory location 2017-01-20 00:21:33 +00:00
flags.ll NewGVN: Apply the fast math flags fix in r267113 to NewGVN as well. 2017-02-12 22:25:20 +00:00
fold-const-expr.ll [NewGVN] Now that load coercion is enable, we pass this test. 2017-08-02 19:47:37 +00:00
fpmath.ll
funclet.ll
int_sideeffect.ll Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
invariant.group.ll Dissallow non-empty metadata for invariant.group 2018-05-18 23:53:46 +00:00
invariant.start.ll
lifetime-simple.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00
load-constant-mem.ll NewGVN: Rewrite DCE during elimination so we do it as well as old GVN did. 2017-03-10 00:32:33 +00:00
load-from-unreachable-predecessor.ll
loadforward.ll [InstSimplify] Constant fold the new GEP in SimplifyGEPInst. 2017-06-06 10:17:14 +00:00
malloc-load-removal.ll NewGVN: Handle coercion of constant stores, loads, memory insts. 2017-04-02 13:23:44 +00:00
memory-handling.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
no_speculative_loads_with_asan.ll Hardware-assisted AddressSanitizer (llvm part). 2017-12-09 00:21:41 +00:00
noalias.ll
non-integral-pointers.ll [GVN] Don't coerce non-integral pointers to integers or vice versa 2017-04-19 18:21:09 +00:00
non-local-offset.ll
nonescaping-malloc.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
null-aliases-nothing.ll
opt-remarks.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
phi-edge-handling.ll NewGVN: Fix PHI evaluation bug exposed by new verifier. We were checking whether the incoming block was reachable instead of whether the specific edge was reachable 2017-03-18 15:41:36 +00:00
phi-of-ops-move-block.ll [NewGVN] Split OpPHI detection and creation. 2018-04-20 16:37:13 +00:00
phi-translate-partial-alias.ll
pr10820.ll NewGVN: Update a number of xfailed tests to either be correct or note 2017-02-12 23:28:06 +00:00
pr12979.ll
pr14166.ll NewGVN: Update a number of xfailed tests to either be correct or note 2017-02-12 23:28:06 +00:00
pr17732.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
pr17852.ll
pr24397.ll
pr24426.ll
pr25440.ll
pr28562.ll
pr31472.ll Don't use our own incorrect version of isTriviallyDeadInstruction in NewGVN. Fixes PR/31472 2016-12-26 18:44:36 +00:00
pr31483.ll NewGVN: Add forgotten testcase for PR 31483 2017-01-02 19:49:20 +00:00
pr31491.ll NewGVN: Fix PR 31491 by ensuring that we touch the right instructions. Change to one based numbering so we can assert we don't cause the same bug again. 2016-12-29 22:15:12 +00:00
pr31501.ll NewGVN: Fix PR 31501. 2017-01-07 00:01:42 +00:00
pr31573.ll NewGVN: Fix PR 31573, a failure to verify memory congruency due to 2017-01-09 05:34:29 +00:00
pr31594.ll NewGVN: Instead of changeToUnreachable, insert an instruction SimplifyCFG will turn into unreachable when it runs 2017-01-30 18:12:56 +00:00
pr31613.ll NewGVN: This patch makes memory congruence work for all types of 2017-04-06 18:52:50 +00:00
pr31682.ll NewGVN: Rewrite DCE during elimination so we do it as well as old GVN did. 2017-03-10 00:32:33 +00:00
pr31758.ll NewGVN: Rewrite DCE during elimination so we do it as well as old GVN did. 2017-03-10 00:32:33 +00:00
pr32403.ll NewGVN: Fix PR/33187. This is a bug caused by two things: 2017-06-06 17:15:28 +00:00
pr32607.ll [InstCombine, NewGVN] remove FP undef from tests 2018-03-08 14:57:08 +00:00
pr32836.ll [NewGVN] Update additionalUsers when we simplify to a value. 2017-05-24 02:30:24 +00:00
pr32838.ll NewGVN: Fix PR32838. 2017-05-19 20:22:20 +00:00
pr32845.ll [NewGVN] Actually check the NewGVN output. 2017-05-21 20:55:53 +00:00
pr32852.ll [NewGVN] Don't derive incorrect implications. 2017-05-01 22:26:28 +00:00
pr32897.ll NewGVN: Fix PR/33187. This is a bug caused by two things: 2017-06-06 17:15:28 +00:00
pr32934.ll [NewGVN] Re-enable test now that the nondeterminism has been fixed. 2017-05-16 22:27:06 +00:00
pr32945.ll [NewGVN] Replace predicate info leftovers. 2017-05-18 21:43:23 +00:00
pr32952.ll [NewGVN] Fix a consistent order for phi nodes operands. 2017-05-09 16:58:28 +00:00
pr33014.ll [NewGVN] Break infinite recursion in singleReachablePHIPath(). 2017-05-18 23:22:44 +00:00
pr33086.ll [NewGVN] Delete the old store when we find congruent to a load. 2017-05-19 04:06:10 +00:00
pr33116.ll NewGVN: Fix PR 33116, the memoryphi version of bug 32838. 2017-05-21 23:41:58 +00:00
pr33185.ll Fix PR/33305. caused by trying to simplify expressions in phi of ops that should have no leaders. 2017-09-02 02:18:44 +00:00
pr33187.ll NewGVN: Fix PR/33187. This is a bug caused by two things: 2017-06-06 17:15:28 +00:00
pr33196.ll [NewGVN] Fix the case where we have a phi-of-ops which goes away. 2017-08-03 21:17:49 +00:00
pr33204.ll NewGVN: Fix PR33204 - We need to add memory users when we bypass memorydefs for loads, not just when we do it for stores. 2017-08-26 07:37:11 +00:00
pr33305.ll Fix PR/33305. caused by trying to simplify expressions in phi of ops that should have no leaders. 2017-09-02 02:18:44 +00:00
pr33367.ll NewGVN: Fix PR/33367, which was causing us to delete non-copy intrinsics accidentally in some rare cases 2018-01-09 20:12:42 +00:00
pr33432.ll Fix PR/33305. caused by trying to simplify expressions in phi of ops that should have no leaders. 2017-09-02 02:18:44 +00:00
pr33461.ll NewGVN: Evaluate phi of ops expressions before creating phi node 2017-09-30 23:51:54 +00:00
pr33720.ll [NewGVN] Check for congruency of memory accesses. 2017-07-11 19:49:12 +00:00
pr34135.ll NewGVN: Make sure we don't incorrectly use PredicateInfo when doing PHI of ops 2017-09-01 19:20:18 +00:00
pr34430.ll NewGVN: Fix PR 34430 - we need to look through predicateinfo copies to detect self-cycles of phi nodes. We also need to not ignore certain types of arguments when testing whether the phi has a backedge or was originally constant. 2017-09-05 02:17:43 +00:00
pr34452.ll NewGVN: Fix PR 34452 by passing instruction all the way down when we do aggregate value simplification 2017-09-05 02:17:42 +00:00
pr35074.ll [NewGVN] Add ops as dependency if we cannot find a leader for ValueOp. 2018-04-19 15:05:47 +00:00
pr35125.ll [NewGVN] Stop assuming PHI args ordering when looking at phi-of-ops. 2017-10-30 20:20:16 +00:00
pre-compare.ll
pre-new-inst.ll
predicates.ll NewGVN: Start making use of predicateinfo pass. 2017-02-18 23:06:50 +00:00
propagate-ir-flags.ll NewGVN: Fix PR 31686 and PR 31698 by rewriting store leader handling. 2017-01-20 21:04:30 +00:00
range.ll
readattrs.ll [BasicAA] Take attributes into account when requesting modref info for a call site 2017-03-01 13:19:51 +00:00
refine-stores.ll NewGVN: This patch makes memory congruence work for all types of 2017-04-06 18:52:50 +00:00
rle-must-alias.ll
rle-no-phi-translate.ll
rle-nonlocal.ll NewGVN: We pass rle-nonlocal, we just perform the replacement in a way that keeps the old name instead of the new one 2017-03-13 22:43:30 +00:00
rle.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
stale-loop-info.ll
storeoverstore.ll NewGVN: Evaluate phi of ops expressions before creating phi node 2017-09-30 23:51:54 +00:00
tbaa.ll [Analysis] Generate more precise TBAA tags when one access encloses the other 2017-12-18 20:05:20 +00:00
unreachable_block_infinite_loop.ll
verify-memoryphi.ll [NewGVN] Fix verification of MemoryPhis in verifyMemoryCongruency(). 2017-05-15 18:50:53 +00:00
volatile-nonvolatile.ll AliasAnalysis: Be less conservative about volatile than atomic. 2017-04-07 01:28:36 +00:00