diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2022-07-14 18:50:02 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2022-07-14 18:50:02 +0000 | 
| commit | 1f917f69ff07f09b6dbb670971f57f8efe718b84 (patch) | |
| tree | 99293cbc1411737cd995dac10a99b2c40ef0944c /llvm/lib/CodeGen/InterleavedAccessPass.cpp | |
| parent | 145449b1e420787bb99721a429341fa6be3adfb6 (diff) | |
Diffstat (limited to 'llvm/lib/CodeGen/InterleavedAccessPass.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/InterleavedAccessPass.cpp | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/InterleavedAccessPass.cpp b/llvm/lib/CodeGen/InterleavedAccessPass.cpp index b3f38a3b53f3..55f3ad796291 100644 --- a/llvm/lib/CodeGen/InterleavedAccessPass.cpp +++ b/llvm/lib/CodeGen/InterleavedAccessPass.cpp @@ -310,10 +310,11 @@ bool InterleavedAccess::lowerInterleavedLoad(        Extracts.push_back(Extract);        continue;      } -    auto *BI = dyn_cast<BinaryOperator>(User); -    if (BI && BI->hasOneUse()) { -      if (auto *SVI = dyn_cast<ShuffleVectorInst>(*BI->user_begin())) { -        BinOpShuffles.insert(SVI); +    if (auto *BI = dyn_cast<BinaryOperator>(User)) { +      if (all_of(BI->users(), +                 [](auto *U) { return isa<ShuffleVectorInst>(U); })) { +        for (auto *SVI : BI->users()) +          BinOpShuffles.insert(cast<ShuffleVectorInst>(SVI));          continue;        }      }  | 
