Skip to content

Commit d2ca466

Browse files
authored
Update BasicBlock.cpp
1 parent f376f39 commit d2ca466

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

llvm/lib/IR/BasicBlock.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,18 @@ bool BasicBlock::hasPHINode() {
9595
return false;
9696
}
9797

98+
// Transform BlockA->BlockB to BlockA->BlockStub->BlockB
99+
BasicBlock *BasicBlock::createStubBlock(BasicBlock *BlockA,
100+
BasicBlock *BlockB) {
101+
BasicBlock *NewBlock = BasicBlock::Create(BlockA->getContext(), "StubBlock",
102+
BlockA->getParent(), BlockB);
103+
IRBuilder<> IRB(NewBlock);
104+
IRB.CreateBr(BlockB);
105+
BlockA->getTerminator()->replaceSuccessorWith(BlockB, NewBlock);
106+
BlockB->replacePhiUsesWith(BlockA, NewBlock);
107+
return NewBlock;
108+
}
109+
98110
BasicBlock::~BasicBlock() {
99111
validateInstrOrdering();
100112

0 commit comments

Comments
 (0)