HomePhabricator

[LoopNest] Use `getUniqueSuccessor()` instead when checking empty blocks

Authored by TaWeiTu on Feb 23 2021, 5:52 PM.

Description

[LoopNest] Use getUniqueSuccessor() instead when checking empty blocks

Blocks that contain only a single branch instruction to the next block can be skipped in analyzing the loop-nest structure.
This is currently done by getSingleSuccessor().
However, the branch instruction might have multiple targets which happen to all be the same.
In this case, the block should still be considered as empty and skipped.

An example is test/Transforms/LoopInterchange/update-condbranch-duplicate-successors.ll (the LIT test for this patch is modified from it as well).

Reviewed By: Whitney

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