diff options
Diffstat (limited to 'llvm/lib/CodeGen/InterleavedAccessPass.cpp')
-rw-r--r-- | llvm/lib/CodeGen/InterleavedAccessPass.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/InterleavedAccessPass.cpp b/llvm/lib/CodeGen/InterleavedAccessPass.cpp index 95c4faf..a65fafc4 100644 --- a/llvm/lib/CodeGen/InterleavedAccessPass.cpp +++ b/llvm/lib/CodeGen/InterleavedAccessPass.cpp @@ -240,8 +240,10 @@ bool InterleavedAccess::lowerInterleavedLoad( continue; } if (auto *BI = dyn_cast<BinaryOperator>(User)) { - if (all_of(BI->users(), - [](auto *U) { return isa<ShuffleVectorInst>(U); })) { + if (all_of(BI->users(), [](auto *U) { + auto *SVI = dyn_cast<ShuffleVectorInst>(U); + return SVI && isa<UndefValue>(SVI->getOperand(1)); + })) { for (auto *SVI : BI->users()) BinOpShuffles.insert(cast<ShuffleVectorInst>(SVI)); continue; |