next value. This avoids crashes due to invalidation.
Patch by Joey Gouly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188605
91177308-0d34-0410-b5e6-
96231b3b80d8
if (Incoming.size() > 1)
Changed |= tryToVectorizeList(Incoming, R);
if (Incoming.size() > 1)
Changed |= tryToVectorizeList(Incoming, R);
- for (BasicBlock::iterator it = BB->begin(), e = BB->end(); it != e; ++it) {
- if (isa<DbgInfoIntrinsic>(it))
+ llvm::Instruction *I;
+ for (BasicBlock::iterator it = BB->begin(), e = BB->end(); it != e;) {
+ I = it++;
+ if (isa<DbgInfoIntrinsic>(I))
continue;
// Try to vectorize reductions that use PHINodes.
continue;
// Try to vectorize reductions that use PHINodes.
- if (PHINode *P = dyn_cast<PHINode>(it)) {
+ if (PHINode *P = dyn_cast<PHINode>(I)) {
// Check that the PHI is a reduction PHI.
if (P->getNumIncomingValues() != 2)
return Changed;
// Check that the PHI is a reduction PHI.
if (P->getNumIncomingValues() != 2)
return Changed;
}
// Try to vectorize trees that start at compare instructions.
}
// Try to vectorize trees that start at compare instructions.
- if (CmpInst *CI = dyn_cast<CmpInst>(it)) {
+ if (CmpInst *CI = dyn_cast<CmpInst>(I)) {
if (tryToVectorizePair(CI->getOperand(0), CI->getOperand(1), R)) {
Changed |= true;
continue;
if (tryToVectorizePair(CI->getOperand(0), CI->getOperand(1), R)) {
Changed |= true;
continue;