aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorDinar Temirbulatov <Dinar.Temirbulatov@arm.com>2024-04-24 14:13:47 +0100
committerGitHub <noreply@github.com>2024-04-24 14:13:47 +0100
commitbd34bc6dc2e4e60813ddea31bfb4ca46d3a96013 (patch)
tree16b3e1e445042b66a93e893e0d4dec94a98e67b6 /clang/lib/Sema/SemaDecl.cpp
parent9cbf96ad5b6fe777bf5acd43b65abfb062381f8c (diff)
downloadllvm-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.cpp10
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();