[clang] [AArch64] Add option -msve-streaming-vector-bits= . (PR #144611)

Eli Friedman via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 25 10:30:07 PDT 2025


================
@@ -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


More information about the cfe-commits mailing list