[ADCE] Add control dependence computation
authorDavid Callahan <dcallahan@fb.com>
Wed, 24 Aug 2016 00:10:06 +0000 (00:10 +0000)
committerDavid Callahan <dcallahan@fb.com>
Wed, 24 Aug 2016 00:10:06 +0000 (00:10 +0000)
commit012d1c07660663737fee20a6a2b898b5f621033c
tree4b85d6bfb918cea700268b997c8964ff5a540b43
parentd06a1b4cdc57ca1462b49fa67dc75981f72ece44
[ADCE] Add control dependence computation

Summary:
This is part of a serious of patches to evolve ADCE.cpp to support
removing of unnecessary control flow.

This patch adds the ability to compute control dependences using
the iterated dominance frontier. We extend the liveness propagation
to alternate between data and control dependences until convergences.

Modify the pass manager intergation to compute the post-dominator tree
needed for iterator dominance frontier.

We still force all terminators live for now until we add code to
handlinge removing control flow in a later patch.

No changes to effective behavior with this patch

Previous patches:

D23225 [ADCE] Modify data structures to support removing control flow
D23065 [ADCE] Refactor anticipating new functionality (NFC)
D23102 [ADCE] Refactoring for new functionality (NFC)

Reviewers: nadav, majnemer, mehdi_amini

Subscribers: twoh, freik, llvm-commits

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

llvm-svn: 279594
llvm/lib/Transforms/Scalar/ADCE.cpp