diff options
author | Dinar Temirbulatov <Dinar.Temirbulatov@arm.com> | 2024-04-24 14:13:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-24 14:13:47 +0100 |
commit | bd34bc6dc2e4e60813ddea31bfb4ca46d3a96013 (patch) | |
tree | 16b3e1e445042b66a93e893e0d4dec94a98e67b6 /clang/lib/Sema/SemaDecl.cpp | |
parent | 9cbf96ad5b6fe777bf5acd43b65abfb062381f8c (diff) | |
download | llvm-bd34bc6dc2e4e60813ddea31bfb4ca46d3a96013.zip llvm-bd34bc6dc2e4e60813ddea31bfb4ca46d3a96013.tar.gz llvm-bd34bc6dc2e4e60813ddea31bfb4ca46d3a96013.tar.bz2 |
[Clang][AArch64] Extend diagnostics when warning non/streaming about vector size difference (#88380)
Add separate messages about passing arguments or returning parameters
with scalable types.
---------
Co-authored-by: Sander de Smalen <sander.desmalen@arm.com>
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 452e00f..37861549 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -12417,12 +12417,16 @@ bool Sema::CheckFunctionDeclaration(Scope *S, FunctionDecl *NewFD, bool UsesZT0 = Attr && Attr->isNewZT0(); if (NewFD->hasAttr<ArmLocallyStreamingAttr>()) { - if (NewFD->getReturnType()->isSizelessVectorType() || - llvm::any_of(NewFD->parameters(), [](ParmVarDecl *P) { + if (NewFD->getReturnType()->isSizelessVectorType()) + Diag(NewFD->getLocation(), + diag::warn_sme_locally_streaming_has_vl_args_returns) + << /*IsArg=*/false; + if (llvm::any_of(NewFD->parameters(), [](ParmVarDecl *P) { return P->getOriginalType()->isSizelessVectorType(); })) Diag(NewFD->getLocation(), - diag::warn_sme_locally_streaming_has_vl_args_returns); + diag::warn_sme_locally_streaming_has_vl_args_returns) + << /*IsArg=*/true; } if (const auto *FPT = NewFD->getType()->getAs<FunctionProtoType>()) { FunctionProtoType::ExtProtoInfo EPI = FPT->getExtProtoInfo(); |