diff options
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/VectorCombine.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/VectorCombine.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp index 3e7118091c8e..e993e5684f41 100644 --- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp +++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp @@ -2652,8 +2652,12 @@ bool VectorCombine::shrinkType(llvm::Instruction &I) { return false; Value *Op0 = ZExted; - if (auto *OI = dyn_cast<Instruction>(OtherOperand)) - Builder.SetInsertPoint(OI->getNextNode()); + if (auto *OI = dyn_cast<Instruction>(OtherOperand)) { + if (isa<PHINode>(OI)) + Builder.SetInsertPoint(OI->getParent()->getFirstInsertionPt()); + else + Builder.SetInsertPoint(OI->getNextNode()); + } Value *Op1 = Builder.CreateTrunc(OtherOperand, SmallTy); Builder.SetInsertPoint(&I); // Keep the order of operands the same |
