diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h index bd6e15d3fb7a5..78b761e64bbff 100644 --- a/llvm/lib/Transforms/Vectorize/VPlan.h +++ b/llvm/lib/Transforms/Vectorize/VPlan.h @@ -1347,8 +1347,11 @@ class VPWidenIntrinsicRecipe : public VPRecipeWithIRFlags, public VPIRMetadata { ~VPWidenIntrinsicRecipe() override = default; VPWidenIntrinsicRecipe *clone() override { - return new VPWidenIntrinsicRecipe(*cast(getUnderlyingValue()), - VectorIntrinsicID, {op_begin(), op_end()}, + if (Value *CI = getUnderlyingValue()) + return new VPWidenIntrinsicRecipe(*cast(CI), VectorIntrinsicID, + {op_begin(), op_end()}, ResultTy, + getDebugLoc()); + return new VPWidenIntrinsicRecipe(VectorIntrinsicID, {op_begin(), op_end()}, ResultTy, getDebugLoc()); }