mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
Teach SimplifyCFG how to simplify indirectbr instructions.
- Eliminate redundant successors. - Convert an indirectbr with one successor into a direct branch. Also, generalize SimplifyCFG to be able to be run on a function entry block. It knows quite a few simplifications which are applicable to the entry block, and it only needs a few checks to avoid trouble with the entry block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111060 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -490,6 +490,9 @@ static bool CanPropagatePredecessorsForPHIs(BasicBlock *BB, BasicBlock *Succ) {
|
||||
/// rewriting all the predecessors to branch to the successor block and return
|
||||
/// true. If we can't transform, return false.
|
||||
bool llvm::TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB) {
|
||||
assert(BB != &BB->getParent()->getEntryBlock() &&
|
||||
"TryToSimplifyUncondBranchFromEmptyBlock called on entry block!");
|
||||
|
||||
// We can't eliminate infinite loops.
|
||||
BasicBlock *Succ = cast<BranchInst>(BB->getTerminator())->getSuccessor(0);
|
||||
if (BB == Succ) return false;
|
||||
|
Reference in New Issue
Block a user