HomePhabricator

Reappl "[Dominators] Add the DomTreeUpdater class"

Description

Reappl "[Dominators] Add the DomTreeUpdater class"

Summary:
This patch is the first in a series of patches related to the RFC - A new dominator tree updater for LLVM.

This patch introduces the DomTreeUpdater class, which provides a cleaner API to perform updates on available dominator trees (none, only DomTree, only PostDomTree, both) using different update strategies (eagerly or lazily) to simplify the updating process.

—Prior to the patch—

  • Directly calling update functions of DominatorTree updates the data structure eagerly while DeferredDominance does updates lazily.
  • DeferredDominance class cannot be used when a PostDominatorTree also needs to be updated.
  • Functions receiving DT/DDT need to branch a lot which is currently necessary.
  • Functions using both DomTree and PostDomTree need to call the update function separately on both trees.
  • People need to construct an additional DeferredDominance class to use functions only receiving DDT.

—After the patch—

Patch by Chijun Sima <simachijun@gmail.com>.

Reviewers: kuhar, brzycki, dmgreen, grosser, davide

Reviewed By: kuhar, brzycki

Author: NutshellySima

Subscribers: vsk, mgorny, llvm-commits

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

Details

Committed
kuharJul 2 2018, 7:06 PM
Reviewer
kuhar
Differential Revision
D48383: [Dominators] Add the DomTreeUpdater class
Parents
rL336162: Revert r336159, r336157. Some bots failed on qualified std::max_align_t, and…
Branches
Unknown
Tags
Unknown