aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2021-07-08 15:05:50 -0700
committerArthur Eubanks <aeubanks@google.com>2021-07-14 14:07:28 -0700
commit5366de7375e653998ff80c3c6cbdfa4f9b9046e3 (patch)
treedf6f53a865060882ce6f69a76e7b947e3cf283ee /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
parent0e49c54a8cbd3e779e5526a5888c683c01cc3c50 (diff)
downloadllvm-5366de7375e653998ff80c3c6cbdfa4f9b9046e3.zip
llvm-5366de7375e653998ff80c3c6cbdfa4f9b9046e3.tar.gz
llvm-5366de7375e653998ff80c3c6cbdfa4f9b9046e3.tar.bz2
[SimpleLoopUnswitch] Don't non-trivially unswitch loops with catchswitch exits
SplitBlock() can't handle catchswitch. Fixes PR50973. Reviewed By: aheejin Differential Revision: https://reviews.llvm.org/D105672
Diffstat (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/BasicBlockUtils.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
index a20799d..def695e 100644
--- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -766,8 +766,10 @@ static BasicBlock *SplitBlockImpl(BasicBlock *Old, Instruction *SplitPt,
BBName);
}
BasicBlock::iterator SplitIt = SplitPt->getIterator();
- while (isa<PHINode>(SplitIt) || SplitIt->isEHPad())
+ while (isa<PHINode>(SplitIt) || SplitIt->isEHPad()) {
++SplitIt;
+ assert(SplitIt != SplitPt->getParent()->end());
+ }
std::string Name = BBName.str();
BasicBlock *New = Old->splitBasicBlock(
SplitIt, Name.empty() ? Old->getName() + ".split" : Name);