mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-07 14:33:15 +00:00
Cleanup trailing whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121816 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7d1d8db54a
commit
93f83deba1
@ -31,20 +31,20 @@ STATISTIC(NumCmps, "Number of comparisons propagated");
|
|||||||
namespace {
|
namespace {
|
||||||
class CorrelatedValuePropagation : public FunctionPass {
|
class CorrelatedValuePropagation : public FunctionPass {
|
||||||
LazyValueInfo *LVI;
|
LazyValueInfo *LVI;
|
||||||
|
|
||||||
bool processSelect(SelectInst *SI);
|
bool processSelect(SelectInst *SI);
|
||||||
bool processPHI(PHINode *P);
|
bool processPHI(PHINode *P);
|
||||||
bool processMemAccess(Instruction *I);
|
bool processMemAccess(Instruction *I);
|
||||||
bool processCmp(CmpInst *C);
|
bool processCmp(CmpInst *C);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static char ID;
|
static char ID;
|
||||||
CorrelatedValuePropagation(): FunctionPass(ID) {
|
CorrelatedValuePropagation(): FunctionPass(ID) {
|
||||||
initializeCorrelatedValuePropagationPass(*PassRegistry::getPassRegistry());
|
initializeCorrelatedValuePropagationPass(*PassRegistry::getPassRegistry());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool runOnFunction(Function &F);
|
bool runOnFunction(Function &F);
|
||||||
|
|
||||||
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
|
||||||
AU.addRequired<LazyValueInfo>();
|
AU.addRequired<LazyValueInfo>();
|
||||||
}
|
}
|
||||||
@ -66,34 +66,34 @@ Pass *llvm::createCorrelatedValuePropagationPass() {
|
|||||||
bool CorrelatedValuePropagation::processSelect(SelectInst *S) {
|
bool CorrelatedValuePropagation::processSelect(SelectInst *S) {
|
||||||
if (S->getType()->isVectorTy()) return false;
|
if (S->getType()->isVectorTy()) return false;
|
||||||
if (isa<Constant>(S->getOperand(0))) return false;
|
if (isa<Constant>(S->getOperand(0))) return false;
|
||||||
|
|
||||||
Constant *C = LVI->getConstant(S->getOperand(0), S->getParent());
|
Constant *C = LVI->getConstant(S->getOperand(0), S->getParent());
|
||||||
if (!C) return false;
|
if (!C) return false;
|
||||||
|
|
||||||
ConstantInt *CI = dyn_cast<ConstantInt>(C);
|
ConstantInt *CI = dyn_cast<ConstantInt>(C);
|
||||||
if (!CI) return false;
|
if (!CI) return false;
|
||||||
|
|
||||||
S->replaceAllUsesWith(S->getOperand(CI->isOne() ? 1 : 2));
|
S->replaceAllUsesWith(S->getOperand(CI->isOne() ? 1 : 2));
|
||||||
S->eraseFromParent();
|
S->eraseFromParent();
|
||||||
|
|
||||||
++NumSelects;
|
++NumSelects;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CorrelatedValuePropagation::processPHI(PHINode *P) {
|
bool CorrelatedValuePropagation::processPHI(PHINode *P) {
|
||||||
bool Changed = false;
|
bool Changed = false;
|
||||||
|
|
||||||
BasicBlock *BB = P->getParent();
|
BasicBlock *BB = P->getParent();
|
||||||
for (unsigned i = 0, e = P->getNumIncomingValues(); i < e; ++i) {
|
for (unsigned i = 0, e = P->getNumIncomingValues(); i < e; ++i) {
|
||||||
Value *Incoming = P->getIncomingValue(i);
|
Value *Incoming = P->getIncomingValue(i);
|
||||||
if (isa<Constant>(Incoming)) continue;
|
if (isa<Constant>(Incoming)) continue;
|
||||||
|
|
||||||
Constant *C = LVI->getConstantOnEdge(P->getIncomingValue(i),
|
Constant *C = LVI->getConstantOnEdge(P->getIncomingValue(i),
|
||||||
P->getIncomingBlock(i),
|
P->getIncomingBlock(i),
|
||||||
BB);
|
BB);
|
||||||
if (!C) continue;
|
if (!C) continue;
|
||||||
|
|
||||||
P->setIncomingValue(i, C);
|
P->setIncomingValue(i, C);
|
||||||
Changed = true;
|
Changed = true;
|
||||||
}
|
}
|
||||||
@ -105,7 +105,7 @@ bool CorrelatedValuePropagation::processPHI(PHINode *P) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
++NumPhis;
|
++NumPhis;
|
||||||
|
|
||||||
return Changed;
|
return Changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,12 +115,12 @@ bool CorrelatedValuePropagation::processMemAccess(Instruction *I) {
|
|||||||
Pointer = L->getPointerOperand();
|
Pointer = L->getPointerOperand();
|
||||||
else
|
else
|
||||||
Pointer = cast<StoreInst>(I)->getPointerOperand();
|
Pointer = cast<StoreInst>(I)->getPointerOperand();
|
||||||
|
|
||||||
if (isa<Constant>(Pointer)) return false;
|
if (isa<Constant>(Pointer)) return false;
|
||||||
|
|
||||||
Constant *C = LVI->getConstant(Pointer, I->getParent());
|
Constant *C = LVI->getConstant(Pointer, I->getParent());
|
||||||
if (!C) return false;
|
if (!C) return false;
|
||||||
|
|
||||||
++NumMemAccess;
|
++NumMemAccess;
|
||||||
I->replaceUsesOfWith(Pointer, C);
|
I->replaceUsesOfWith(Pointer, C);
|
||||||
return true;
|
return true;
|
||||||
@ -136,32 +136,32 @@ bool CorrelatedValuePropagation::processCmp(CmpInst *C) {
|
|||||||
if (isa<Instruction>(Op0) &&
|
if (isa<Instruction>(Op0) &&
|
||||||
cast<Instruction>(Op0)->getParent() == C->getParent())
|
cast<Instruction>(Op0)->getParent() == C->getParent())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Constant *Op1 = dyn_cast<Constant>(C->getOperand(1));
|
Constant *Op1 = dyn_cast<Constant>(C->getOperand(1));
|
||||||
if (!Op1) return false;
|
if (!Op1) return false;
|
||||||
|
|
||||||
pred_iterator PI = pred_begin(C->getParent()), PE = pred_end(C->getParent());
|
pred_iterator PI = pred_begin(C->getParent()), PE = pred_end(C->getParent());
|
||||||
if (PI == PE) return false;
|
if (PI == PE) return false;
|
||||||
|
|
||||||
LazyValueInfo::Tristate Result = LVI->getPredicateOnEdge(C->getPredicate(),
|
LazyValueInfo::Tristate Result = LVI->getPredicateOnEdge(C->getPredicate(),
|
||||||
C->getOperand(0), Op1, *PI, C->getParent());
|
C->getOperand(0), Op1, *PI, C->getParent());
|
||||||
if (Result == LazyValueInfo::Unknown) return false;
|
if (Result == LazyValueInfo::Unknown) return false;
|
||||||
|
|
||||||
++PI;
|
++PI;
|
||||||
while (PI != PE) {
|
while (PI != PE) {
|
||||||
LazyValueInfo::Tristate Res = LVI->getPredicateOnEdge(C->getPredicate(),
|
LazyValueInfo::Tristate Res = LVI->getPredicateOnEdge(C->getPredicate(),
|
||||||
C->getOperand(0), Op1, *PI, C->getParent());
|
C->getOperand(0), Op1, *PI, C->getParent());
|
||||||
if (Res != Result) return false;
|
if (Res != Result) return false;
|
||||||
++PI;
|
++PI;
|
||||||
}
|
}
|
||||||
|
|
||||||
++NumCmps;
|
++NumCmps;
|
||||||
|
|
||||||
if (Result == LazyValueInfo::True)
|
if (Result == LazyValueInfo::True)
|
||||||
C->replaceAllUsesWith(ConstantInt::getTrue(C->getContext()));
|
C->replaceAllUsesWith(ConstantInt::getTrue(C->getContext()));
|
||||||
else
|
else
|
||||||
C->replaceAllUsesWith(ConstantInt::getFalse(C->getContext()));
|
C->replaceAllUsesWith(ConstantInt::getFalse(C->getContext()));
|
||||||
|
|
||||||
C->eraseFromParent();
|
C->eraseFromParent();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -169,9 +169,9 @@ bool CorrelatedValuePropagation::processCmp(CmpInst *C) {
|
|||||||
|
|
||||||
bool CorrelatedValuePropagation::runOnFunction(Function &F) {
|
bool CorrelatedValuePropagation::runOnFunction(Function &F) {
|
||||||
LVI = &getAnalysis<LazyValueInfo>();
|
LVI = &getAnalysis<LazyValueInfo>();
|
||||||
|
|
||||||
bool FnChanged = false;
|
bool FnChanged = false;
|
||||||
|
|
||||||
for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) {
|
for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI) {
|
||||||
bool BBChanged = false;
|
bool BBChanged = false;
|
||||||
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ) {
|
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end(); BI != BE; ) {
|
||||||
@ -193,9 +193,9 @@ bool CorrelatedValuePropagation::runOnFunction(Function &F) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FnChanged |= BBChanged;
|
FnChanged |= BBChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FnChanged;
|
return FnChanged;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user