diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-04-29 06:17:47 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-04-29 06:17:47 +0000 |
commit | 790eb1c4901a7bd2e1d71f12ea0ad92167f3461b (patch) | |
tree | fe9047ce97af8e860f7c39c22bcd688d3410d994 /llvm/lib/Analysis | |
parent | cd24bb1d3a1957854418f9d14e274304553fa9d1 (diff) | |
download | bcm5719-llvm-790eb1c4901a7bd2e1d71f12ea0ad92167f3461b.tar.gz bcm5719-llvm-790eb1c4901a7bd2e1d71f12ea0ad92167f3461b.zip |
DivergenceAnalysis: Fix crash with unreachable blocks
Unreachable blocks may not be in the dominator tree,
so don't crash on them.
llvm-svn: 268001
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r-- | llvm/lib/Analysis/DivergenceAnalysis.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/DivergenceAnalysis.cpp b/llvm/lib/Analysis/DivergenceAnalysis.cpp index b30539f3b31..d38725ff0ac 100644 --- a/llvm/lib/Analysis/DivergenceAnalysis.cpp +++ b/llvm/lib/Analysis/DivergenceAnalysis.cpp @@ -138,6 +138,11 @@ void DivergencePropagator::exploreSyncDependency(TerminatorInst *TI) { // a2 = 2; // a = phi(a1, a2); // sync dependent on (tid < 5) BasicBlock *ThisBB = TI->getParent(); + + // Unreachable blocks may not be in the dominator tree. + if (!DT.isReachableFromEntry(ThisBB)) + return; + BasicBlock *IPostDom = PDT.getNode(ThisBB)->getIDom()->getBlock(); if (IPostDom == nullptr) return; |