This patch factors out code to merge a basic block with its sole
successor -- partly for readability and partly to facilitate an
upcoming patch of my own.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 40525 Build 40637: arc lint + arc unit
Event Timeline
Comment Actions
Sorry, there is a little more refactoring which could be done.
llvm/lib/Transforms/Scalar/JumpThreading.cpp | ||
---|---|---|
1884–1887 | It is better to have some early return to handle the cases in which we cannot merge. BasicBlock *SinglePred = BB->getSinglePredecessor() if (!SinglePred) return false; const Instruction *TI = SinglePred->getTerminator(); if (TI->isExceptionalTerminator() || TI->getNumSuccessors() != 1 || SinglePred == BB || hasAddressTakenAndUsed(BB)) return false; ...... |
It is better to have some early return to handle the cases in which we cannot merge.