llvm-project/llvm/test/Transforms/Reassociate
Bjorn Pettersson bec2a7c4eb [DebugInfo] Invalidate debug info in ReassociatePass::RewriteExprTree
Summary:
When Reassociate is rewriting an expression tree it may
reuse old binary expression nodes, for new expressions.
Whenever an expression node is reused, but with a non-trivial
change in the result, we need to invalidate any debug info
that is associated with the node.

If for example rewriting
  x = mul a, b
  y = mul c, x
into
  x = mul c, b
  y = mul a, x
we still get the same result for 'y', but 'x' is a new expression.
All debug info referring to 'x' must be invalidated (marked as
optimized out) since we no longer calculate the expected value.

As a side-effect this patch avoid (at least some) problems where
reassociate could end up creating IR with debug-use before def.
Earlier the dbg.value nodes where left untouched in the IR, while
the reused binary nodes where sinked to just before the root node
of the rewritten expression tree. See PR27273 for more info about
such problems.

Reviewers: dblaikie, aprantl, dexonsmith

Reviewed By: aprantl

Subscribers: JDevlieghere, llvm-commits

Tags: #debug-info

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

llvm-svn: 330804
2018-04-25 09:23:56 +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 [Reassociate] add check lines; NFC 2017-11-09 16:25:35 +00:00
basictest.ll Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
canonicalize-neg-const.ll [Reassociate] regenerate test checks; NFC 2017-11-09 16:30:19 +00:00
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 [Reassociate] add tests with 'reassoc' FMF; NFC 2017-11-13 17:29:11 +00:00
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 [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
fp-commute.ll
fp-expr.ll [ConstantFold] fp_binop undef, undef --> undef 2018-03-08 20:42:49 +00:00
inverses.ll
keep-debug-loc.ll
looptest.ll
matching-binops.ll [Reassociate] add baseline tests for binop swapping; NFC 2018-04-19 21:56:17 +00:00
mightymul.ll
min_int.ll
mixed-fast-nonfast-fp.ll [Reassociate] add tests with 'reassoc' FMF; NFC 2017-11-13 17:29:11 +00:00
mulfactor.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
multistep.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
negation.ll
negation1.ll
no-op.ll
optional-flags.ll
otherops.ll
pr12245.ll
pr21205.ll
pr28367.ll
propagate-flags.ll [Reassociate] regenerate test checks; NFC 2017-11-09 22:41:39 +00:00
reassoc-intermediate-fnegs.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
reassociate-deadinst.ll
reassociate_dbgvalue_discard.ll [DebugInfo] Invalidate debug info in ReassociatePass::RewriteExprTree 2018-04-25 09:23:56 +00:00
repeats.ll
secondary.ll
shift-factor.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
shifttest.ll
subtest.ll
vaarg_movable.ll
wrap-flags.ll
xor_reassoc.ll