1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test/Transforms/LoopSimplifyCFG
Max Kazantsev 3c0acd8ea8 [LoopSimplifyCFG] Fix inconsistency in live blocks markup
When we choose whether or not we should mark block as dead, we have an
inconsistent logic in markup of live blocks.
- We take candidate IF its terminator branches on constant AND it is immediately
  in current loop;
- We mark successor live IF its terminator doesn't branch by constant OR it branches
  by constant and the successor is its always taken block.

What we are missing here is that when the terminator branches on a constant but is
not taken as a candidate because is it not immediately in the current loop, we will
mark only one (always taken) successor as live. Therefore, we do NOT do the actual
folding but may NOT mark one of the successors as live. So the result of markup is
wrong in this case, and we may then hit various asserts.

Thanks Jordan Rupprech for reporting this!

Differential Revision: https://reviews.llvm.org/D57095
Reviewed By: rupprecht

llvm-svn: 352024
2019-01-24 05:20:29 +00:00
..
constant-fold-branch.ll [LoopSimplifyCFG] Fix order of deletion of complex dead subloops 2019-01-17 12:25:40 +00:00
irreducible_cfg.ll [LoopSimplifyCFG] Do not deal with loops with irreducible CFG inside 2018-12-07 05:44:45 +00:00
lcssa.ll [LoopSimplifyCFG] Form LCSSA when a parent loop becomes a sibling 2019-01-17 12:51:10 +00:00
live_block_marking.ll [LoopSimplifyCFG] Fix inconsistency in live blocks markup 2019-01-24 05:20:29 +00:00
merge-header.ll Update MemorySSA in LoopSimplifyCFG. 2018-08-22 20:10:21 +00:00
phi_with_duplicating_inputs.ll Add missing REQUIRES: asserts 2018-11-27 07:51:18 +00:00
pr39783.ll [NFC] Verify memoryssa in test for PR39783 2018-12-05 05:20:08 +00:00
scev.ll Update MemorySSA in LoopSimplifyCFG. 2018-08-22 20:10:21 +00:00