mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
s/RemoveUnreachableBlocks/RemoveUnreachableBlocksFromFn/g
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55965 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
14b0a2b137
commit
2379089a6e
@ -148,9 +148,10 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
|||||||
return Changed;
|
return Changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// RemoveUnreachableBlocks - Remove blocks that are not reachable, even if they
|
/// RemoveUnreachableBlocksFromFn - Remove blocks that are not reachable, even
|
||||||
/// are in a dead cycle. Return true if a change was made, false otherwise.
|
/// if they are in a dead cycle. Return true if a change was made, false
|
||||||
static bool RemoveUnreachableBlocks(Function &F) {
|
/// otherwise.
|
||||||
|
static bool RemoveUnreachableBlocksFromFn(Function &F) {
|
||||||
SmallPtrSet<BasicBlock*, 128> Reachable;
|
SmallPtrSet<BasicBlock*, 128> Reachable;
|
||||||
bool Changed = MarkAliveBlocks(F.begin(), Reachable);
|
bool Changed = MarkAliveBlocks(F.begin(), Reachable);
|
||||||
|
|
||||||
@ -208,23 +209,23 @@ static bool IterativeSimplifyCFG(Function &F) {
|
|||||||
// simplify the CFG.
|
// simplify the CFG.
|
||||||
//
|
//
|
||||||
bool CFGSimplifyPass::runOnFunction(Function &F) {
|
bool CFGSimplifyPass::runOnFunction(Function &F) {
|
||||||
bool EverChanged = RemoveUnreachableBlocks(F);
|
bool EverChanged = RemoveUnreachableBlocksFromFn(F);
|
||||||
EverChanged |= IterativeSimplifyCFG(F);
|
EverChanged |= IterativeSimplifyCFG(F);
|
||||||
|
|
||||||
// If neither pass changed anything, we're done.
|
// If neither pass changed anything, we're done.
|
||||||
if (!EverChanged) return false;
|
if (!EverChanged) return false;
|
||||||
|
|
||||||
// IterativeSimplifyCFG can (rarely) make some loops dead. If this happens,
|
// IterativeSimplifyCFG can (rarely) make some loops dead. If this happens,
|
||||||
// RemoveUnreachableBlocks is needed to nuke them, which means we should
|
// RemoveUnreachableBlocksFromFn is needed to nuke them, which means we should
|
||||||
// iterate between the two optimizations. We structure the code like this to
|
// iterate between the two optimizations. We structure the code like this to
|
||||||
// avoid reruning IterativeSimplifyCFG if the second pass of
|
// avoid reruning IterativeSimplifyCFG if the second pass of
|
||||||
// RemoveUnreachableBlocks doesn't do anything.
|
// RemoveUnreachableBlocksFromFn doesn't do anything.
|
||||||
if (!RemoveUnreachableBlocks(F))
|
if (!RemoveUnreachableBlocksFromFn(F))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
EverChanged = IterativeSimplifyCFG(F);
|
EverChanged = IterativeSimplifyCFG(F);
|
||||||
EverChanged |= RemoveUnreachableBlocks(F);
|
EverChanged |= RemoveUnreachableBlocksFromFn(F);
|
||||||
} while (EverChanged);
|
} while (EverChanged);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user