================ @@ -2261,6 +2261,21 @@ void Sema::checkTypeSupport(QualType Ty, SourceLocation Loc, ValueDecl *D) { } } } + + if (auto *VT = Ty->getAs<VectorType>(); + VT && FD && + (VT->getVectorKind() == VectorKind::SveFixedLengthData || + VT->getVectorKind() == VectorKind::SveFixedLengthPredicate)) { + if (IsArmStreamingFunction(FD, /*IncludeLocallyStreaming=*/true)) { + Diag(Loc, diag::err_sve_fixed_vector_in_streaming_function) << Ty << 0; + } else if (const auto *FTy = FD->getType()->getAs<FunctionProtoType>()) { + if (FTy->getAArch64SMEAttributes() & + FunctionType::SME_PStateSMCompatibleMask) { + Diag(Loc, diag::err_sve_fixed_vector_in_streaming_function) ---------------- efriedma-quic wrote:
I can allow the use of arm_sve_vector_bits in streaming/streaming-compatible functions if the streaming and non-streaming widths are the same, sure. Your last two testcases are the same: the conversion happens in the caller, so the first case reduces to the second. Which is an issue, I guess, but not directly related to this patch. It doesn't involve any fixed-width types. https://github.com/llvm/llvm-project/pull/144611 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits