mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 07:11:49 +00:00
Update function names to conform to guidelines.
No functional change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163279 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
88a7e92fe1
commit
557a20a234
@ -59,9 +59,9 @@ FunctionPass *llvm::createCFGSimplificationPass() {
|
||||
return new CFGSimplifyPass();
|
||||
}
|
||||
|
||||
/// ChangeToUnreachable - Insert an unreachable instruction before the specified
|
||||
/// changeToUnreachable - Insert an unreachable instruction before the specified
|
||||
/// instruction, making it and the rest of the code in the block dead.
|
||||
static void ChangeToUnreachable(Instruction *I, bool UseLLVMTrap) {
|
||||
static void changeToUnreachable(Instruction *I, bool UseLLVMTrap) {
|
||||
BasicBlock *BB = I->getParent();
|
||||
// Loop over all of the successors, removing BB's entry from any PHI
|
||||
// nodes.
|
||||
@ -87,8 +87,8 @@ static void ChangeToUnreachable(Instruction *I, bool UseLLVMTrap) {
|
||||
}
|
||||
}
|
||||
|
||||
/// ChangeToCall - Convert the specified invoke into a normal call.
|
||||
static void ChangeToCall(InvokeInst *II) {
|
||||
/// changeToCall - Convert the specified invoke into a normal call.
|
||||
static void changeToCall(InvokeInst *II) {
|
||||
SmallVector<Value*, 8> Args(II->op_begin(), II->op_end() - 3);
|
||||
CallInst *NewCall = CallInst::Create(II->getCalledValue(), Args, "", II);
|
||||
NewCall->takeName(II);
|
||||
@ -105,7 +105,7 @@ static void ChangeToCall(InvokeInst *II) {
|
||||
II->eraseFromParent();
|
||||
}
|
||||
|
||||
static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
static bool markAliveBlocks(BasicBlock *BB,
|
||||
SmallPtrSet<BasicBlock*, 128> &Reachable) {
|
||||
|
||||
SmallVector<BasicBlock*, 128> Worklist;
|
||||
@ -129,7 +129,7 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
++BBI;
|
||||
if (!isa<UnreachableInst>(BBI)) {
|
||||
// Don't insert a call to llvm.trap right before the unreachable.
|
||||
ChangeToUnreachable(BBI, false);
|
||||
changeToUnreachable(BBI, false);
|
||||
Changed = true;
|
||||
}
|
||||
break;
|
||||
@ -148,7 +148,7 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
if (isa<UndefValue>(Ptr) ||
|
||||
(isa<ConstantPointerNull>(Ptr) &&
|
||||
SI->getPointerAddressSpace() == 0)) {
|
||||
ChangeToUnreachable(SI, true);
|
||||
changeToUnreachable(SI, true);
|
||||
Changed = true;
|
||||
break;
|
||||
}
|
||||
@ -159,7 +159,7 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
if (InvokeInst *II = dyn_cast<InvokeInst>(BB->getTerminator())) {
|
||||
Value *Callee = II->getCalledValue();
|
||||
if (isa<ConstantPointerNull>(Callee) || isa<UndefValue>(Callee)) {
|
||||
ChangeToUnreachable(II, true);
|
||||
changeToUnreachable(II, true);
|
||||
Changed = true;
|
||||
} else if (II->doesNotThrow()) {
|
||||
if (II->use_empty() && II->onlyReadsMemory()) {
|
||||
@ -168,7 +168,7 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
II->getUnwindDest()->removePredecessor(II->getParent());
|
||||
II->eraseFromParent();
|
||||
} else
|
||||
ChangeToCall(II);
|
||||
changeToCall(II);
|
||||
Changed = true;
|
||||
}
|
||||
}
|
||||
@ -180,12 +180,12 @@ static bool MarkAliveBlocks(BasicBlock *BB,
|
||||
return Changed;
|
||||
}
|
||||
|
||||
/// RemoveUnreachableBlocksFromFn - Remove blocks that are not reachable, even
|
||||
/// removeUnreachableBlocksFromFn - Remove blocks that are not reachable, even
|
||||
/// if they are in a dead cycle. Return true if a change was made, false
|
||||
/// otherwise.
|
||||
static bool RemoveUnreachableBlocksFromFn(Function &F) {
|
||||
static bool removeUnreachableBlocksFromFn(Function &F) {
|
||||
SmallPtrSet<BasicBlock*, 128> Reachable;
|
||||
bool Changed = MarkAliveBlocks(F.begin(), Reachable);
|
||||
bool Changed = markAliveBlocks(F.begin(), Reachable);
|
||||
|
||||
// If there are unreachable blocks in the CFG...
|
||||
if (Reachable.size() == F.size())
|
||||
@ -215,9 +215,9 @@ static bool RemoveUnreachableBlocksFromFn(Function &F) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/// MergeEmptyReturnBlocks - If we have more than one empty (other than phi
|
||||
/// mergeEmptyReturnBlocks - If we have more than one empty (other than phi
|
||||
/// node) return blocks, merge them together to promote recursive block merging.
|
||||
static bool MergeEmptyReturnBlocks(Function &F) {
|
||||
static bool mergeEmptyReturnBlocks(Function &F) {
|
||||
bool Changed = false;
|
||||
|
||||
BasicBlock *RetBlock = 0;
|
||||
@ -291,9 +291,9 @@ static bool MergeEmptyReturnBlocks(Function &F) {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
/// IterativeSimplifyCFG - Call SimplifyCFG on all the blocks in the function,
|
||||
/// iterativelySimplifyCFG - Call SimplifyCFG on all the blocks in the function,
|
||||
/// iterating until no more changes are made.
|
||||
static bool IterativeSimplifyCFG(Function &F, const TargetData *TD) {
|
||||
static bool iterativelySimplifyCFG(Function &F, const TargetData *TD) {
|
||||
bool Changed = false;
|
||||
bool LocalChange = true;
|
||||
while (LocalChange) {
|
||||
@ -317,24 +317,24 @@ static bool IterativeSimplifyCFG(Function &F, const TargetData *TD) {
|
||||
//
|
||||
bool CFGSimplifyPass::runOnFunction(Function &F) {
|
||||
const TargetData *TD = getAnalysisIfAvailable<TargetData>();
|
||||
bool EverChanged = RemoveUnreachableBlocksFromFn(F);
|
||||
EverChanged |= MergeEmptyReturnBlocks(F);
|
||||
EverChanged |= IterativeSimplifyCFG(F, TD);
|
||||
bool EverChanged = removeUnreachableBlocksFromFn(F);
|
||||
EverChanged |= mergeEmptyReturnBlocks(F);
|
||||
EverChanged |= iterativelySimplifyCFG(F, TD);
|
||||
|
||||
// If neither pass changed anything, we're done.
|
||||
if (!EverChanged) return false;
|
||||
|
||||
// IterativeSimplifyCFG can (rarely) make some loops dead. If this happens,
|
||||
// RemoveUnreachableBlocksFromFn is needed to nuke them, which means we should
|
||||
// iterativelySimplifyCFG can (rarely) make some loops dead. If this happens,
|
||||
// removeUnreachableBlocksFromFn is needed to nuke them, which means we should
|
||||
// iterate between the two optimizations. We structure the code like this to
|
||||
// avoid reruning IterativeSimplifyCFG if the second pass of
|
||||
// RemoveUnreachableBlocksFromFn doesn't do anything.
|
||||
if (!RemoveUnreachableBlocksFromFn(F))
|
||||
// avoid reruning iterativelySimplifyCFG if the second pass of
|
||||
// removeUnreachableBlocksFromFn doesn't do anything.
|
||||
if (!removeUnreachableBlocksFromFn(F))
|
||||
return true;
|
||||
|
||||
do {
|
||||
EverChanged = IterativeSimplifyCFG(F, TD);
|
||||
EverChanged |= RemoveUnreachableBlocksFromFn(F);
|
||||
EverChanged = iterativelySimplifyCFG(F, TD);
|
||||
EverChanged |= removeUnreachableBlocksFromFn(F);
|
||||
} while (EverChanged);
|
||||
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user