================ @@ -2517,8 +2527,17 @@ Value *ScalarExprEmitter::VisitCastExpr(CastExpr *CE) { // If we are casting a scalable i1 predicate vector to a fixed i8 // vector, bitcast the source and use a vector extract. if (ScalableSrcTy->getElementType()->isIntegerTy(1) && - ScalableSrcTy->getElementCount().isKnownMultipleOf(8) && FixedDstTy->getElementType()->isIntegerTy(8)) { + if (!ScalableSrcTy->getElementCount().isKnownMultipleOf(8)) { + ScalableSrcTy = llvm::ScalableVectorType::get( + ScalableSrcTy->getElementType(), + llvm::alignTo<8>( + ScalableSrcTy->getElementCount().getKnownMinValue())); + llvm::Value *ZeroVec = llvm::Constant::getNullValue(ScalableSrcTy); ---------------- paulwalker-arm wrote:
Should this be poison instead of zero? https://github.com/llvm/llvm-project/pull/139190 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits