llvm-project/llvm/test/Transforms/Reassociate
Davide Italiano 6e1f7bf316 [Reassociate] Prevent infinite loops when processing PHIs.
Phi nodes can reside in live blocks but one of their incoming
arguments can come from a dead block. Dead blocks and reassociate
don't play nice together. In fact, reassociate performs an RPO
as a first step to avoid processing dead blocks.

The reason why Reassociate might not fixpoint when examining
dead blocks is that the following:

  %xor0 = xor i16 %xor1, undef
  %xor1 = xor i16 %xor0, undef

is perfectly valid LLVM IR (if it appears in a dead block),
so the worklist algorithm keeps pushing the two instructions for
reexamination. Note that this is not Reassociate fault, at least
not entirely. It's llvm that has a weird definition of dominance.

Fixes PR37390.

llvm-svn: 332100
2018-05-11 15:45:36 +00:00
..
2002-05-15-AgressiveSubMove.ll
2002-05-15-MissedTree.ll
2002-05-15-SubReassociate.ll
2002-07-09-DominanceProblem.ll
2003-08-12-InfiniteLoop.ll
2005-09-01-ArrayOutOfBounds.ll
2006-04-27-ReassociateVector.ll
2011-01-26-UseAfterFree.ll
2012-05-08-UndefLeak.ll
2012-06-08-InfiniteLoop.ll
absorption.ll
add_across_block_crash.ll
basictest.ll Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
canonicalize-neg-const.ll
commute.ll
crash.ll
crash2.ll [Reassociate] fix test to be independent of FP undef 2018-03-08 22:05:27 +00:00
deadcode.ll
erase_inst_made_change.ll
factorize-again.ll [ConstantFold] fp_binop undef, undef --> undef 2018-03-08 20:42:49 +00:00
fast-AgressiveSubMove.ll
fast-ArrayOutOfBounds.ll
fast-MissedTree.ll [InstCombine] Enable Add/Sub simplifications with only 'reassoc' FMF 2018-04-14 19:18:28 +00:00
fast-ReassociateVector.ll Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
fast-SubReassociate.ll [InstCombine] Enable Add/Sub simplifications with only 'reassoc' FMF 2018-04-14 19:18:28 +00:00
fast-basictest.ll [InstCombine] Enable Add/Sub simplifications with only 'reassoc' FMF 2018-04-14 19:18:28 +00:00
fast-fp-commute.ll Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
fast-mightymul.ll
fast-multistep.ll
fp-commute.ll
fp-expr.ll [ConstantFold] fp_binop undef, undef --> undef 2018-03-08 20:42:49 +00:00
infloop-deadphi.ll [Reassociate] Prevent infinite loops when processing PHIs. 2018-05-11 15:45:36 +00:00
inverses.ll
keep-debug-loc.ll
long-chains.ll [reassociate] Fix excessive revisits when processing long chains of reassociatable instructions. 2018-05-02 17:59:16 +00:00
looptest.ll
matching-binops.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
mightymul.ll
min_int.ll
mixed-fast-nonfast-fp.ll
mulfactor.ll
multistep.ll
negation.ll
negation1.ll
no-op.ll
optional-flags.ll
otherops.ll
pr12245.ll
pr21205.ll
pr28367.ll
propagate-flags.ll
reassoc-intermediate-fnegs.ll
reassociate-deadinst.ll
reassociate_dbgvalue_discard.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
repeats.ll
secondary.ll
shift-factor.ll
shifttest.ll
subtest.ll
vaarg_movable.ll
wrap-flags.ll
xor_reassoc.ll