[DA] DivergenceAnalysis for unstructured, reducible CFGs
authorNicolai Haehnle <nhaehnle@gmail.com>
Thu, 18 Oct 2018 09:38:44 +0000 (09:38 +0000)
committerNicolai Haehnle <nhaehnle@gmail.com>
Thu, 18 Oct 2018 09:38:44 +0000 (09:38 +0000)
commit59041687bee841f46c520f4b6a7cb8f97b4efd05
treeee68401a20c14319b8feff8b53a31250d973b130
parent547f89d607044004969f2556e1d10770917b753d
[DA] DivergenceAnalysis for unstructured, reducible CFGs

Summary:
This is patch 2 of the new DivergenceAnalysis (https://reviews.llvm.org/D50433).

This patch contains a generic divergence analysis implementation for
unstructured, reducible Control-Flow Graphs. It contains two new classes.
The `SyncDependenceAnalysis` class lazily computes sync dependences, which
relate divergent branches to points of joining divergent control. The
`DivergenceAnalysis` class contains the generic divergence analysis
implementation.

Reviewers: nhaehnle

Reviewed By: nhaehnle

Subscribers: sameerds, kristina, nhaehnle, xbolva00, tschuett, mgorny, llvm-commits

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

llvm-svn: 344734
llvm/include/llvm/ADT/PostOrderIterator.h
llvm/include/llvm/Analysis/DivergenceAnalysis.h [new file with mode: 0644]
llvm/include/llvm/Analysis/SyncDependenceAnalysis.h [new file with mode: 0644]
llvm/lib/Analysis/CMakeLists.txt
llvm/lib/Analysis/DivergenceAnalysis.cpp [new file with mode: 0644]
llvm/lib/Analysis/SyncDependenceAnalysis.cpp [new file with mode: 0644]
llvm/unittests/Analysis/CMakeLists.txt
llvm/unittests/Analysis/DivergenceAnalysisTest.cpp [new file with mode: 0644]