summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp')
-rw-r--r--llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 7f767dcc7d6..d201387debd 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -4938,7 +4938,8 @@ class HorizontalReduction {
case RK_Max:
case RK_UMin:
case RK_UMax:
- propagateIRFlags(cast<SelectInst>(Op)->getCondition(), ReductionOps[0]);
+ if (auto *SI = dyn_cast<SelectInst>(Op))
+ propagateIRFlags(SI->getCondition(), ReductionOps[0]);
propagateIRFlags(Op, ReductionOps[1]);
return Op;
case RK_None:
@@ -4961,8 +4962,10 @@ class HorizontalReduction {
case RK_Max:
case RK_UMin:
case RK_UMax:
- propagateIRFlags(cast<SelectInst>(Op)->getCondition(),
- cast<SelectInst>(I)->getCondition());
+ if (auto *SI = dyn_cast<SelectInst>(Op)) {
+ propagateIRFlags(SI->getCondition(),
+ cast<SelectInst>(I)->getCondition());
+ }
propagateIRFlags(Op, I);
return Op;
case RK_None:
OpenPOWER on IntegriCloud