mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-07 11:59:09 +00:00
PR 16899: Do not modify the basic block using the iterator, but keep the
next value. This avoids crashes due to invalidation. Patch by Joey Gouly. llvm-svn: 188605
This commit is contained in:
parent
699e0f5552
commit
72a32889f4
@ -1895,12 +1895,14 @@ bool SLPVectorizer::vectorizeChainsInBlock(BasicBlock *BB, BoUpSLP &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.
|
||||
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;
|
||||
@ -1922,7 +1924,7 @@ bool SLPVectorizer::vectorizeChainsInBlock(BasicBlock *BB, BoUpSLP &R) {
|
||||
}
|
||||
|
||||
// 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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user