diff options
author | Taewook Oh <twoh@fb.com> | 2019-05-15 19:35:38 +0000 |
---|---|---|
committer | Taewook Oh <twoh@fb.com> | 2019-05-15 19:35:38 +0000 |
commit | 9d020de3e867e17101299dcd278bacc1365dce25 (patch) | |
tree | 89f005cf1f7bae148dd2af2080958a08771aa600 /llvm/lib/Transforms/Utils/PredicateInfo.cpp | |
parent | e8a039d62c7e7c687d729bca5aacfc553125c0ea (diff) | |
download | bcm5719-llvm-9d020de3e867e17101299dcd278bacc1365dce25.tar.gz bcm5719-llvm-9d020de3e867e17101299dcd278bacc1365dce25.zip |
[PredicateInfo] Do not process unreachable operands.
Summary: We should excluded unreachable operands from processing as their DFS visitation order is undefined. When `renameUses` function sorts `OpsToRename` (https://fburl.com/d2wubn60), the comparator assumes that the parent block of the operand has a corresponding dominator tree node. This is not the case for unreachable operands and crashes the compiler.
Reviewers: dberlin, mgrang, davide
Subscribers: efriedma, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61154
llvm-svn: 360796
Diffstat (limited to 'llvm/lib/Transforms/Utils/PredicateInfo.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/PredicateInfo.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/PredicateInfo.cpp b/llvm/lib/Transforms/Utils/PredicateInfo.cpp index 6f041ace6d1..bdf24d80bd1 100644 --- a/llvm/lib/Transforms/Utils/PredicateInfo.cpp +++ b/llvm/lib/Transforms/Utils/PredicateInfo.cpp @@ -473,7 +473,8 @@ void PredicateInfo::buildPredicateInfo() { } for (auto &Assume : AC.assumptions()) { if (auto *II = dyn_cast_or_null<IntrinsicInst>(Assume)) - processAssume(II, II->getParent(), OpsToRename); + if (DT.isReachableFromEntry(II->getParent())) + processAssume(II, II->getParent(), OpsToRename); } // Now rename all our operations. renameUses(OpsToRename); |