mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-24 19:44:49 +00:00
[SCEV] Use for-each; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255069 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b2bc86f251
commit
8f28b0e1d8
@ -2452,9 +2452,8 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImpl<const SCEV *> &Ops,
|
||||
if (const SCEVAddExpr *Add = dyn_cast<SCEVAddExpr>(Ops[1])) {
|
||||
SmallVector<const SCEV *, 4> NewOps;
|
||||
bool AnyFolded = false;
|
||||
for (SCEVAddRecExpr::op_iterator I = Add->op_begin(),
|
||||
E = Add->op_end(); I != E; ++I) {
|
||||
const SCEV *Mul = getMulExpr(Ops[0], *I);
|
||||
for (const SCEV *AddOp : Add->operands()) {
|
||||
const SCEV *Mul = getMulExpr(Ops[0], AddOp);
|
||||
if (!isa<SCEVMulExpr>(Mul)) AnyFolded = true;
|
||||
NewOps.push_back(Mul);
|
||||
}
|
||||
@ -2463,10 +2462,9 @@ const SCEV *ScalarEvolution::getMulExpr(SmallVectorImpl<const SCEV *> &Ops,
|
||||
} else if (const auto *AddRec = dyn_cast<SCEVAddRecExpr>(Ops[1])) {
|
||||
// Negation preserves a recurrence's no self-wrap property.
|
||||
SmallVector<const SCEV *, 4> Operands;
|
||||
for (SCEVAddRecExpr::op_iterator I = AddRec->op_begin(),
|
||||
E = AddRec->op_end(); I != E; ++I) {
|
||||
Operands.push_back(getMulExpr(Ops[0], *I));
|
||||
}
|
||||
for (const SCEV *AddRecOp : AddRec->operands())
|
||||
Operands.push_back(getMulExpr(Ops[0], AddRecOp));
|
||||
|
||||
return getAddRecExpr(Operands, AddRec->getLoop(),
|
||||
AddRec->getNoWrapFlags(SCEV::FlagNW));
|
||||
}
|
||||
@ -3550,13 +3548,12 @@ const SCEV *ScalarEvolution::getPointerBase(const SCEV *V) {
|
||||
return getPointerBase(Cast->getOperand());
|
||||
} else if (const SCEVNAryExpr *NAry = dyn_cast<SCEVNAryExpr>(V)) {
|
||||
const SCEV *PtrOp = nullptr;
|
||||
for (SCEVNAryExpr::op_iterator I = NAry->op_begin(), E = NAry->op_end();
|
||||
I != E; ++I) {
|
||||
if ((*I)->getType()->isPointerTy()) {
|
||||
for (const SCEV *NAryOp : NAry->operands()) {
|
||||
if (NAryOp->getType()->isPointerTy()) {
|
||||
// Cannot find the base of an expression with multiple pointer operands.
|
||||
if (PtrOp)
|
||||
return V;
|
||||
PtrOp = *I;
|
||||
PtrOp = NAryOp;
|
||||
}
|
||||
}
|
||||
if (!PtrOp)
|
||||
@ -5827,12 +5824,10 @@ getConstantEvolvingPHIOperands(Instruction *UseInst, const Loop *L,
|
||||
// Otherwise, we can evaluate this instruction if all of its operands are
|
||||
// constant or derived from a PHI node themselves.
|
||||
PHINode *PHI = nullptr;
|
||||
for (Instruction::op_iterator OpI = UseInst->op_begin(),
|
||||
OpE = UseInst->op_end(); OpI != OpE; ++OpI) {
|
||||
for (Value *Op : UseInst->operands()) {
|
||||
if (isa<Constant>(Op)) continue;
|
||||
|
||||
if (isa<Constant>(*OpI)) continue;
|
||||
|
||||
Instruction *OpInst = dyn_cast<Instruction>(*OpI);
|
||||
Instruction *OpInst = dyn_cast<Instruction>(Op);
|
||||
if (!OpInst || !canConstantEvolve(OpInst, L)) return nullptr;
|
||||
|
||||
PHINode *P = dyn_cast<PHINode>(OpInst);
|
||||
@ -9353,9 +9348,8 @@ ScalarEvolution::computeBlockDisposition(const SCEV *S, const BasicBlock *BB) {
|
||||
case scSMaxExpr: {
|
||||
const SCEVNAryExpr *NAry = cast<SCEVNAryExpr>(S);
|
||||
bool Proper = true;
|
||||
for (SCEVNAryExpr::op_iterator I = NAry->op_begin(), E = NAry->op_end();
|
||||
I != E; ++I) {
|
||||
BlockDisposition D = getBlockDisposition(*I, BB);
|
||||
for (const SCEV *NAryOp : NAry->operands()) {
|
||||
BlockDisposition D = getBlockDisposition(NAryOp, BB);
|
||||
if (D == DoesNotDominateBlock)
|
||||
return DoesNotDominateBlock;
|
||||
if (D == DominatesBlock)
|
||||
|
Loading…
x
Reference in New Issue
Block a user